目录

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

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

1.问题描述

https://i-blog.csdnimg.cn/blog_migrate/987fbc45317632c44de2c8aae45193a6.png

2.解决办法

二分法+递归

  • 首先数组是有序的,二叉搜索树也是有序的
  • 先找到数组的中间树mid,将他作为根节点
  • 他的左子树只能实在left——mid中产生,进行递归即可
  • 他的右子树只能实在mid——right中产生,进行递归即可

3.代码实现

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