二叉搜尋樹(bst)
又稱二叉排序樹、二叉查詢樹
性質:
非空左子樹上所有節點的值均小於它的根節點的值;
非右子樹上所有節點的值均大於它的根節點的值;
任意節點的左,右子樹也分別為二叉搜尋樹;
查詢
查詢x在樹中的位置,根據二叉搜尋樹的性質查詢還是不難的
find
(int x,bintree bst)
return
null
;//查詢失敗
}
插入在二叉搜尋樹裡面插入x,首先要判斷樹是否為空,如果為空就生成乙個新的節點然後返回,如果不為空就需要判斷,若大於該結點的值,就遞迴插入右子樹,若小於該節點的值就遞迴插入左子樹,否則就表示該x已經存在不需要插入。
insert
(int x,bintree bst)
else
//查詢插入的位置
return bst;
}
刪除要刪除的結點沒有左右子節點了,就直接刪除再把它父節點改為null就可以了。
要刪除的結點它有乙個兒子,可以把它的兒子與他的值互換,然後刪掉它的子節點。
要刪除的結點有左右子樹。這裡也是通過互換來刪除,但不能直接與它兒子換。有兩種換法(1.與右子樹的最小值換,2.與左子樹的最大值換)這樣是最符合的。比如如果是右子樹的最小值,就一定沒有子節點了,可以放心的拋棄它。
二叉搜尋樹 二叉搜尋樹
題目 二叉搜尋樹 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 解釋 輸入為 ...