Question description
Screenshot 2016-10-05 11.36.19.pngMy code
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
int length = nums.length;
if (length < 1) return null;
if (length == 1) {
TreeNode root = new TreeNode(nums[0]);
root.left = null;
root.right = null;
return root;
}
TreeNode root = new TreeNode(nums[length / 2]);
int leftFrom = 0;
int leftTo = length / 2;
int rightFrom = length / 2 + 1;
int rightTo = length;
int[] leftNums = Arrays.copyOfRange(nums, leftFrom, leftTo);
int[] rightNums = Arrays.copyOfRange(nums, rightFrom, rightTo);
root.left = sortedArrayToBST(leftNums);
root.right = sortedArrayToBST(rightNums);
return root;
}
}
Solution
A sorted array is a natural balanced binary search tree. Just find the middle number of nums and set it as root node, and do the same to the left sub-array and right sub-array.
网友评论