二叉搜尋樹(bst)定義:
二叉搜尋樹的查詢
遞迴查詢
position find
(bintree bst,elementype x)
非遞迴查詢position find
(bintree bst,elementype x)
return bst;
}
查詢二叉搜尋樹的最大值和最小值position findmin
(bintree bst)
position findmax
(bintree bst)
二叉搜尋樹的插入插入
bintree insert
(bintree bst,elementype x)
else
//開始找要插入元素的位置
}
二叉搜尋樹的刪除
要考慮三種情況
要刪除的結點是葉結點,直接刪除,並讓其父結點指標指向為null;
要刪除的結點只有乙個左孩子或右孩子,將父結點的指標指向要刪除結點的孩子,刪除要刪除的結點
要刪除的結點有左孩子和右孩子,用另一結點替代被刪除結點,替代的結點可以是要刪除結點左子樹的最大值或右子樹的最小值
bintree delete
(elementype x,bintree bst)
else
//被刪除結點有乙個或無子結點
return tmp;
}
二叉搜尋樹 二叉搜尋樹的刪除操作
如圖刪除 7,4,2直接刪除接可以 如圖 刪除6把7拉上去 如圖 刪除3 4沒有左孩子直接返回4 所以最後的結果只是4覆蓋3 上 class solution if key root.val else if key root.val else else if root.right null else...
二叉搜尋樹常用操作函式
二叉搜尋樹常用的一些操作,如插入,刪除,尋找最大最小節點,前序中序後序遍歷等 typedef int itemtype typedef struct binnode node,pnode,tree 插入節點 void insert tree t,const itemtype x else if x ...
二叉搜尋樹的操作
一 二叉搜尋樹的概念 1.二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹 1 若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 2 若它的右子樹不為空,則右子樹上所有節點的值都大於根節點的值 3 它的左右子樹也分別為二叉搜尋樹 給定值的比較次數等於給定值節點在二叉排...