有序数组转为二叉搜索树
要求高度平衡:选择升序序列的中间元素作为根节点,以该元素左边的升序序列构建左子树,以该元素右边的升序序列构建右子树。
public static TreeNode sortedArrayToBST(int[] nums){
return dfs(nums, 0, nums.length - 1);
}
public static TreeNode dfs(int[] nums, int left, int right){
if(left > right) return null;
int mid = left + ((right - left) >> 1);
TreeNode root = new TreeNode(nums[mid]);
root.left = dfs(nums, left, mid - 1);
root.right = dfs(nums, mid + 1, right);
return root;
}
时间复杂度:o(n),空间复杂度:o(log n)