题解 | #将升序数组转化为平衡二叉搜索树#
将升序数组转化为平衡二叉搜索树
http://www.nowcoder.com/practice/7e5b00f94b254da599a9472fe5ab283d
这道题的难点就在于是否能够发现其实每次都需要将下中位点拿来做根节点,hhh
public TreeNode sortedArrayToBST (int[] num) {
if(num==null||num.length==0) return null;
return createBST(num,0,num.length-1);
}
public TreeNode createBST(int[] num,int start,int end){
if(start>end){
return null;
}
int mid = (end+start+1)>>1;//这个+1是精髓
TreeNode head = new TreeNode(num[mid]);
TreeNode left = createBST(num,start,mid-1);
TreeNode right = createBST(num,mid+1,end);
head.left = left;
head.right = right;
return head;
}
查看17道真题和解析