由于给定的是升序的有序数组。 为了创建平衡二分检索树,所以选取的每个节点时当前区间的中间节点。左子树为左半区间,右子树为右半区间。
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode sortedArrayToBST(int[] num) {
int len = num.length;
TreeNode root=null;
root = fun(num,0,len-1);
return root;
}
TreeNode fun(int[] num,int left,int right)
{
if(left > right )
{
return null;
}
int mid = (left+right)/2;
TreeNode tmp = new TreeNode(num[mid]);
tmp.left = fun(num,left,mid-1);
tmp.right = fun(num,mid+1,right);
return tmp;
}
}