目录

LeetCode-108.-将有序数组转换为二叉搜索树

目录

LeetCode 108. 将有序数组转换为二叉搜索树

https://img-home.csdnimg.cn/images/20240711112329.png

https://i-blog.csdnimg.cn/blog_migrate/58e4b83a297cc1a4b1bc8a443330a5cb.png

https://i-blog.csdnimg.cn/blog_migrate/150304078186fa1a17eab0e43d055ac5.png

https://i-blog.csdnimg.cn/blog_migrate/220f355cfc29d6e462f2a5dc09eee12e.png

【递归构建】每次选中间的点作为根节点

class Solution {

    int[] nums;

    public TreeNode dfs(int left, int right){
        if(left > right) return null;
        if(left == right) return new TreeNode(nums[left]);
        int mid = (left + right) >>> 1;
        TreeNode l = dfs(left, mid - 1);
        TreeNode r = dfs(mid + 1, right);
        return new TreeNode(nums[mid], l, r);
    }

    public TreeNode sortedArrayToBST(int[] nums) {
        this.nums = nums;
        return dfs(0, nums.length - 1);
    }
}