給定乙個二叉搜尋樹,同時給定最小邊界l 和最大邊界 r。通過修剪二叉搜尋樹,使得所有節點的值在[l, r]中 (r>=l) 。你可能需要改變樹的根節點,所以結果應當返回修剪好的二叉搜尋樹的新的根節點。
示例 1:
輸入:
1/ \
0 2
l = 1
r = 2
輸出: 1\
2
示例 2:
輸入:
3/ \
0 4\2
/1 l = 1
r = 3
輸出: 3/
2
/ 1
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
//若當前節點值大於最大值,比root.val小的一定在其左子樹,返回左子樹遞迴結果
if(root.val > r)
//若當前節點值小於最小值,比root.val大的一定在其右子樹,返回右子樹遞迴結果
if(root.val < l)
root.left =
trimbst
(root.left, l, r)
;//遞迴修剪左右子樹,返回新的左右子樹
root.right =
trimbst
(root.right, l, r)
;return root;
}}
LeetCode 669 修剪二叉搜尋樹
給定乙個二叉搜尋樹,同時給定最小邊界l 和最大邊界 r。通過修剪二叉搜尋樹,使得所有節點的值在 l,r 中 r l 你可能需要改變樹的根節點,所以結果應當返回修剪好的二叉搜尋樹的新的根節點。如果當前節點值大於r,則說明該節點的右子樹都大於r 所以可直接捨棄該節點的右子樹,然後再繼續往左子樹 找打 r...
leetcode 669 修剪二叉搜尋樹
給定乙個二叉搜尋樹,同時給定最小邊界l和最大邊界r。通過修剪二叉搜尋樹,使得所有節點的值在 l,r 中 r l 你可能需要改變樹的根節點,所以結果應當返回修剪好的二叉搜尋樹的新的根節點。示例 1 輸入 1 0 2 l 1 r 2輸出 1 2示例 2 輸入 3 0 4 2 1 l 1 r 3輸出 3 ...
leetcode669 修剪二叉搜尋樹
思路分析 這道題與 leetcode 刪除二叉搜尋樹中的節點 非常類似,但是相比之下簡單很多。首先,我們知道二叉搜尋樹的定義是 左子樹的節點元素值 root的值 右子樹的節點元素值,並且左子樹 右子樹同樣滿足這個條件 遞迴定義 演算法描述 如果root的值 l,說明,root和root left都需...