插入操作
tree-insert(t,z)// 執行時間o(h)
y=nil //該過程保持遍歷指標y作為x的雙親
x=t.root //指標x記錄了一條向下的簡單路徑
while x!=nil
y=xif z.key < x.key
x=x.left
else x=x.right
z.p=y
if y==nil
t.root=z //tree t was empty
else
if z.keyy.left=z
else y.right=z
刪除操作
transplant
(t,u,v)
//以v替換u
if u.p==nil
t.root=v
else
if u==u.p.left
u.p.left=v
else u.p.right=v
if v!=nil
v.p=u.p
tree_delete
(t,z)
if z.left==nil //1)z無左孩子
transplant
(t,z,z.right)
else
if z.right==nil //2)z無右孩子
transplant
(t,z,z.left)
else y=
tree_minimum
(z.right)
//找到z的後繼y
if y.p!=z //3)z有左右孩子,且y不是z的孩子
transplant
(t,y,y.right)
y.right=z.right
y.right.p=y
transplant
(t,z,y)
//4)z有左右孩子且y就是z的右孩子
y.left=z.left
y.left.p=y
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 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 解釋 輸入為 ...