给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。
高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。
分析:
这道题还是不难的,使用到了二分的思路,将数组一分为二后,中间的树即为二叉树的中间节点,二叉树的左右节点通过递归数组的左半边和右半边即可获取,注意边界条件,我所使用的是左闭右开的方式,还是相对容易做出来的。
参考代码:
public TreeNode sortedArrayToBST(int[] nums) {
return sup(nums,0,nums.length);
}
private TreeNode sup(int[]nums,int left,int right){
if(right-left<1) return null;
if(right-left==1) return new TreeNode(nums[left]);
int mid=left+(right-left)/2;
TreeNode ret = new TreeNode(nums[mid]);
ret.left=sup(nums,left,mid);
ret.right=sup(nums,mid+1,right);
return ret;
}
