Loading

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

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

难度简单678

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

示例:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

      0
     / \
   -3   9
   /   /
 -10  5

解题思路

从中间节点将数组开, 分别为左子树和右子树。然后递归即可。

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

public TreeNode createTree(int left, int right, int[] nums) {
    if (left > right) {
        return null;
    }
    int mid = (left + right)/2;
    TreeNode root = new TreeNode(nums[mid]);
    root.left = createTree(left, mid-1, nums);
    root.right = createTree(mid+1, right, nums);
    return root;
}
posted @ 2021-01-18 15:33  反身而诚、  阅读(45)  评论(0编辑  收藏  举报