669.修建搜索二叉搜索树108.有序数组转换成二叉搜索树

61 阅读1分钟

二叉搜索树:左子树value<根节点value && 右子树value>根节点value && 左右子树也是二叉搜索树

669.修建搜索二叉搜索树

保证节点数值在范围内 image.png

class Solution {
    public TreeNode trimBST(TreeNode root, int low, int high) {
        if(root == null) return null;
        if(root.val < low) return trimBST(root.right, low, high);
        if(root.val > high) return trimBST(root.left, low, high);
        root.left = trimBST(root.left, low, high);
        root.right = trimBST(root.right, low, high);
        return root;
    }
}

108.有序数组转换成二叉搜索树

image.png

class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return build(nums, 0, nums.length - 1);
    }
    public TreeNode build(int[] nums, int left, int right){//不要忘记int
        if(left > right) return null;
        int mid = left + (right - left) / 2;
        TreeNode root = new TreeNode(nums[mid]);
        root.left = build(nums, left, mid - 1);
        root.right = build(nums, mid + 1, right);
        return root;
    }
}