Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
Example:
Given the sorted array: [-10,-3,0,5,9],One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:0/ \-3 9/ /-10 5
题意
将一个有序数组转换成左右子树高度差不超过1的平衡二叉查找树。
思路
递归处理,每次在待选数中选择中位数作当前子树的根,再递归生成左子树和右子树。
代码实现
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/class Solution {public TreeNode sortedArrayToBST(int[] nums) {return sortedArrayToBST(nums, 0, nums.length - 1);}private TreeNode sortedArrayToBST(int[] nums, int left, int right) {if (left > right) {return null;}int mid = (left + right) / 2;TreeNode x = new TreeNode(nums[mid]);x.left = sortedArrayToBST(nums, left, mid - 1);x.right = sortedArrayToBST(nums, mid + 1, right);return x;}}
