将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
示例:

思路
取数组中间的数为根节点,左边的数中间为左子树节点,右边的数为右子树节点,以此类推
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if (nums.length == 0) {
return null;
}
return sort(nums,0,nums.length-1);
}
public TreeNode sort(int []nums,int s,int e){
if(s>e){
return null;
}
int mid=s+(e-s)/2;
TreeNode root=new TreeNode(nums[mid]);
root.left=sort(nums,s,mid-1);
root.right=sort(nums,mid+1,e);
return root;
}
}
网友评论