修剪二叉搜尋樹

2021-10-11 13:31:09 字數 677 閱讀 6703

題目描述:

給你二叉搜尋樹的根節點 root ,同時給定最小邊界low 和最大邊界 high。通過修剪二叉搜尋樹,使得所有節點的值在[low, high]中。修剪樹不應該改變保留在樹中的元素的相對結構(即,如果沒有被移除,原有的父代子代關係都應當保留)。 可以證明,存在唯一的答案。

所以結果應當返回修剪好的二叉搜尋樹的新的根節點。注意,根節點可能會根據給定的邊界發生改變。

輸入:root = [3,0,4,null,2,null,null,1], low = 1, high = 3

輸出:[3,2,null,1]

思路分析:二叉搜尋樹中,其中的值必須在當前區間中[low,high]

節點值在該區間,則返回該節點

節點值不在該區間,返回左孩子或者右孩子

遞迴上述情況

**:

class

solution

return root;

//滿足情況,返回該節點}}

;

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

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

修剪二叉搜尋樹

給定乙個二叉搜尋樹,同時給定最小邊界l 和最大邊界 r。通過修剪二叉搜尋樹,使得所有節點的值在 l,r 中 r l 你可能需要改變樹的根節點,所以結果應當返回修剪好的二叉搜尋樹的新的根節點。示例 1 輸入 1 0 2l 1 r 2 輸出 1 2示例 2 輸入 3 0 4 2 1l 1 r 3 輸出 ...

修剪二叉搜尋樹

分治遞迴 遞迴函式的功能是使以當前節點為根的樹修剪完畢且返回處理完成後的樹根節點 當根節點的值小於下界時,根節點以及其左子樹應全部丟棄,此時返回對根節點的右孩子遞迴呼叫函式的返回值。當根節點的值大於上界時,根節點以及其右子樹應全部丟棄,此時返回對根節點的左孩子遞迴呼叫函式的返回值。若根節點的值處於下...