一、题目
给定一个整数数组nums,其中元素按升序排列,转换为一个平衡二叉搜索树。

二、思路
1、二叉搜索树的特性是左子树 < 根节点 < 右子树,对于升序数组,选择数组的中间节点作为根节点,左半部分构造左子树,右半部分构造右子树。
2、递归终止条件left > right,左子树范围:[left, mid - 1]右子树范围:[mid + 1, right]
三、代码
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
int left = 0, right = nums.length-1;
TreeNode root = sort(nums,left,right);
return root;
}
private TreeNode sort(int[] nums,int left,int right){
if(left > right) return null;
int mid = left + (right - left) / 2;
TreeNode node = new TreeNode(nums[mid]);
node.left = sort(nums,left,mid-1);
node.right = sort(nums,mid+1,right);
return node;
}
}