思路
什么是二叉搜索树:对于每个节点来说,我的左节点小于我,我的有节点大于等于我
什么是平衡二叉搜索树:对于每个节点来说我左子树深度和我的右子树深度差值不能大于1
既然数组已经有序,所以我们可以直接从中位数开始建立当前节点,那么左边就是我的左子树,右边就是我的右子树,依次递归。代码如下:
class Solution {public TreeNode sortedArrayToBST(int[] nums) {if (nums==null||nums.length==0){return null;}return process(nums,0,nums.length-1);}private TreeNode process(int[] nums, int start, int end) {if (start>end){return null;}int mid=(start+end)/2;TreeNode node = new TreeNode(nums[mid]);node.left=process(nums,start,mid-1);node.right=process(nums,mid+1,end);return node;}
}