leetcode 669. 修剪二叉搜索树

递归:
class Solution {
public TreeNode trimBST(TreeNode root, int low, int high) {
if(root==null) return root;
if(root.val<low) return trimBST(root.right,low,high);
else if(root.val>high) return trimBST(root.left,low,high);
else{
root.left=trimBST(root.left,low,high);
root.right=trimBST(root.right,low,high);
return root;
}
}
}
迭代:
class Solution {
public TreeNode trimBST(TreeNode root, int low, int high) {
while(root!=null&&(root.val<low||root.val>high)){
if(root.val<low) root=root.right;
else root=root.left;
}
TreeNode cur=root;
while(cur!=null){
while(cur.left!=null&&cur.left.val<low){
cur.left=cur.left.right;
}
cur=cur.left;
}
cur=root;
while(cur!=null){
while(cur.right!=null&&cur.right.val>high){
cur.right=cur.right.left;
}
cur=cur.right;
}
return root;
}
}

浙公网安备 33010602011771号