有序数组转搜索二叉树
题目:LeetCode108给你一个整数数组nums,其中元素已经按照升序排列,请你将其转换为一颗高度平衡的二叉搜索树。
高度平衡二叉树是一颗满足每个结点的左右两个子树的高度差的绝对值不超过1的二叉树。
运用二分查找,每次用升序序列的中间元素作为根节点:
public TreeNode sortedArrayBST(int[] nums){
return helper(nums, 0 ,nums.length - 1);
}
public TreeNode helper(int[] nums, int left, int right){
if (left > right){
return null;
}
//总是选择中间位置左边的元素作为根节点,
int mid = (left + right) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = helper(nums,left,mid - 1);
root.right = helper(nums,mid + 1,right);
return root;
}