二叉查詢樹(binary search tree),它是一顆具有下列性質的二叉樹:
若左子樹不空,則左子樹上所有結點的值均小於或等於它的根節點的值;
若右子數不空,則右子樹上所有節點的值均大於或等於它的根節點的值;
左、右子樹也分別為二叉排序樹。
等於的情況只能出現在左子樹或右子樹中的某一側。
由於二叉查詢樹的中序遍歷是從小到大的,故又名二叉排序樹(binary sort tree)。
將某節點(insert_node),插入以node為根二叉查詢樹中:
如果insert_node節點值小於當前node節點值:
如果node有左子樹,則遞迴地將該節點插入至左子樹中
否則,將node->left賦值為該節點位址
否則(大於等於情況):
如果node有右子樹,則遞迴的將該節點插入至右子樹為根二叉排序樹中
否則,將node->right賦值為該節點位址
#include
#include
struct treenode;}
;void
bst_insert
(treenode * node, treenode * insert_node)
else
}else
else}}
void
preorder
(treenode* node,
int layer)
for(
int i =
0; i < layer; i++
)printf
("[%d]\n"
,node-
>val)
;preorder
(node-
>left, layer+1)
;preorder
(node-
>right, layer +1)
;}intmain()
;for
(int i =
0; i <
sizeof
(test)
/sizeof
(test[0]
); i++
)for
(int i =
0; i < node_vec.
size()
; i++
)preorder
(&root,0)
;return0;
}
執行結果:
[8]
-----[
3]----
------[
1]----
------[
6]-----[
10]----
------[
15]
二叉查詢樹 插入 刪除 查詢
二叉查詢樹是滿足以下條件的二叉樹 1.左子樹上的所有節點值均小於根節點值,2右子樹上的所有節點值均不小於根節點值,3,左右子樹也滿足上述兩個條件。二叉查詢樹的插入過程如下 1.若當前的二叉查詢樹為空,則插入的元素為根節點,2.若插入的元素值小於根節點值,則將元素插入到左子樹中,3.若插入的元素值不小...
二叉查詢樹 插入 刪除 查詢
二叉查詢樹 插入 刪除 查詢 二叉查詢樹 是滿足以下條件的二叉樹 1.左子樹上的所有節點值均小於根節點值,2右子樹上的所有節點值均不小於根節點值,3,左右子樹也滿足上述兩個條件。二叉查詢樹的插入 過程如下 1.若當前的二叉查詢樹為空,則插入的元素為根節點,2.若插入的元素值小於根節點值,則將元素插入...
二叉搜尋樹 插入 查詢
宣告 第一次寫二叉搜尋樹,可能會有bug 這棵二叉搜尋樹以中序遍歷的方式輸出,所以插入 儲存的規則也是按照中序遍歷的規則 include using namespace std struct node node root,nil 根節點和乙個空結點 void insert int key else ...