Leetcode 669. 修剪二叉搜索树

Leetcode 669. 修剪二叉搜索树_第1张图片
可用递归法:

  1. 如果root.val小于边界值low,则root的左子树必然也小于low,只需递归处理root.right;
  2. 如果root.val大于边界值high,则root右子树必然也大于high,只需递归处理root.left ;
  3. 如果root.val在范围内,则root被保留,分别递归处理root.left和root.right。

实现代码如下:

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;
    }
}

你可能感兴趣的:(leetcode,算法,职场和发展)