Binary Search Tree
定義: 若一顆二元樹滿足以下兩點:
a. 左子節點的值小於節點的值
b. 右子節點的值大於節點的值
即可稱為二元搜尋樹
1 | 2 6 |
二元搜尋樹的查詢, 插入, 走訪, 查詢最大最小值和刪除操作
提示: 刪除節點有兩個子節點的時候, 要用它的中序後繼來代替該節點,
演算法為: 找到被刪除節點的右子節點, 然後查詢此右子節點下的最後一個左子節點, 即此顆子樹的最小值節點, 這就是被刪除節點的中序後繼節點.
何謂前序, 中序, 後序?
以上圖右邊的三層樹為例, 看1~2層的子樹:
preorder 前序: 6 -> 5 -> 8
inorder 中序: 5 -> 6 -> 8
postorder 後序: 5 -> 8 -> 6
若看整顆:
中序: 3 -> 5 -> 6 -> 7 -> 8 -> 9
所以若要刪除8, 要找它的“中序後繼節點(in-order successor)”的話, 就是9了
本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 YouChen's Blog!