二叉搜尋樹

2022-07-30 23:33:13 字數 1195 閱讀 6768

查詢問題:

二叉搜尋樹(bst,binary search tree),也稱二叉排序樹或二叉查詢樹

二叉搜尋樹:一棵二叉樹,可以為空;如果不為空,滿足以下性質:

1.非空左子樹的所有鍵值小於其根結點的鍵值。

2.非空右子樹的所有鍵值大於其根結點的鍵值。

3.左、右子樹都是二叉搜尋樹。

二叉搜尋樹操作的特別函式:

bintree insert(elementtype x, bintree bst)

bintree delete(elementtype x, bintree bst)

若兩者比較結果是相等,搜尋完成,返回指向此結點的指標

1

position find(elementtype x, bintree bst)

2

由於非遞迴函式的執行效率高,可將"尾遞迴」函式改為迭代函式

1

position iterfind(elementtype x, bintree bst)211

return null; /*

查詢失敗

*/12 }

查詢效率取決於樹的高度

1

position findmin(bintree bst)29

10position findmax(bintree bst)

1118

19position findmin(bintree bst)

2025

26position findmax(bintree bst)

27

分析:關鍵是要找到元素應該插入的位置,可以採用與find類似的方法。

1

bintree insert(elementtype x, bintree bst)

2 else

13return

bst;

14 }

考慮三種情況:

取右子樹中的最小元素替代

取左子樹中的最大元素替代

1

bintree delete(elementtype x, bintree bst)

2 else

22return

bst;

23 }

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...

樹 二叉樹 二叉搜尋樹

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