第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。
treenode*
trimbst
(treenode* root,
int low,
int high)
if(root-
>val > high)
//下一層處理完左子樹的結果賦給root->left,處理完右子樹的結果賦給root->right。
root-
>left =
trimbst
(root-
>left, low, high)
; root-
>right =
trimbst
(root-
>right, low, high)
;return root;
}
精簡一下:
treenode*
trimbst
(treenode* root,
int low,
int high)
修剪二叉搜尋樹
給定乙個二叉搜尋樹,同時給定最小邊界l 和最大邊界 r。通過修剪二叉搜尋樹,使得所有節點的值在 l,r 中 r l 你可能需要改變樹的根節點,所以結果應當返回修剪好的二叉搜尋樹的新的根節點。示例 1 輸入 1 0 2l 1 r 2 輸出 1 2示例 2 輸入 3 0 4 2 1l 1 r 3 輸出 ...
修剪二叉搜尋樹
分治遞迴 遞迴函式的功能是使以當前節點為根的樹修剪完畢且返回處理完成後的樹根節點 當根節點的值小於下界時,根節點以及其左子樹應全部丟棄,此時返回對根節點的右孩子遞迴呼叫函式的返回值。當根節點的值大於上界時,根節點以及其右子樹應全部丟棄,此時返回對根節點的左孩子遞迴呼叫函式的返回值。若根節點的值處於下...
修剪二叉搜尋樹
題目描述 給你二叉搜尋樹的根節點 root 同時給定最小邊界low 和最大邊界 high。通過修剪二叉搜尋樹,使得所有節點的值在 low,high 中。修剪樹不應該改變保留在樹中的元素的相對結構 即,如果沒有被移除,原有的父代子代關係都應當保留 可以證明,存在唯一的答案。所以結果應當返回修剪好的二叉...