二叉樹 二叉搜尋樹的建立和插入

2021-09-29 16:44:03 字數 2007 閱讀 2597

二叉搜尋樹又名二叉排序樹。

大概簡略的思維導圖如下,方便記憶特性

基本二叉搜尋樹建立過程如下

/*資料結構如下*/

typedef

struct tree

tree,

*treenode;

/*node 為二叉樹根節點,insert為插入的節點*/

void

create_tree

(treenode *node, tree *insert)

else

}else

else

}}

查詢某一數值是否存在的過程如下:

bool search

(tree *node,

int val)

if(node -> data > val)

else

}else

else

}}

測試**如下:

#include

#include

#include

#include

#include

#include

using namespace std;

typedef

struct tree

tree,

*treenode;

void

create_tree

(treenode *node, tree *insert)

else

}else

else}}

void

preorder

(tree *node,

int layer)

for(

int i =

0;i < layer;

++i)

cout << node -> data << endl;

preorder

(node -> left,layer +1)

;preorder

(node -> right, layer +1)

;}bool search

(tree *node,

int val)

if(node -> data > val)

else

}else

else}}

intmain

(int argc,

char

const

*ar**)

cout <<

"preorder"

<< endl;

preorder

(root,0)

; string s =

(search

(root,10)

==1)?

"success"

:"failed"

; cout <<

"\nsearch 10 in tree "

<< s << endl;

return0;

}

輸出如下:

#輸入

53 1 19 2 9

#輸出preorder

8----3

--------1

------------2

----19

--------9

search 10 in tree failed

#輸入5

3 1 10 2 9

#輸出

preorder

8----3

--------1

------------2

----10

--------9

search 10 in tree success

二叉樹 還原二叉樹 二叉搜尋樹

先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...