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

81 阅读1分钟

题目

image.png

代码

  • 如果数组长度为偶数,中间节点有两个,取哪一个?
  • 取哪一个都可以,只不过构成了不同的平衡二叉搜索树。
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        return bulid(nums, 0, nums.length - 1);
    }
    public TreeNode bulid(int[] nums, int start, int end) {
        if (start > end) {
            return null;
        }
        int mid = start + (end - start) / 2;
        TreeNode root = new TreeNode(nums[mid]);
        root.left = bulid(nums, start, mid - 1);
        root.right = bulid(nums, mid + 1, end);
        return root;
    }
}