Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
该题很简单,只需要将数组最中间的数作为根节点,左边的作为左节点,右边的作为右节点,再反复递归实现即可。
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode sortedArray2BST(int[] num, int start, int end) {
int tmp = (start + end) / 2;
TreeNode node = new TreeNode(num[tmp]);
if(start!=tmp) node.left = sortedArray2BST(num, start, tmp - 1);
if(tmp!=end) node.right = sortedArray2BST(num, tmp + 1, end);
return node;
}
public TreeNode sortedArrayToBST(int[] num) {
if(num.length==0) return null;
int start=0;
int end=num.length-1;
return sortedArray2BST(num,start,end);
}
}