原题链接
题目描述
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
Example:
Given the sorted array: [-10,-3,0,5,9],
One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:
0 / \ -3 9 / / -10 5
我的解法
我的思路暴力且简单,找到数组最中间的那个数作为父节点,数组剩下左边的就是他的左子树,右边的就是右子树,递归。
import java.util.Arrays;
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if (nums == null || nums.length == 0)
return null;
int begin = 0, end = nums.length;
int mid = (begin + end) / 2;
TreeNode first = new TreeNode(nums[mid]);
first.left = sortedArrayToBST(Arrays.copyOfRange(nums, 0, mid));
first.right = sortedArrayToBST(Arrays.copyOfRange(nums, mid + 1, nums.length));
return first;
}
}
新技能
Java数组的切片(需要import java.util.Arrays;
)
Arrays.copyOfRange(arr, beginIndex, endIndex);
返回的是arr中[beginIndex, endIndex)中内容组成的新数组(原数组不改变)。