Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
題意:給定一個升序的數(shù)組绸硕,把這個數(shù)組轉(zhuǎn)變成一個高度平衡的二叉搜索樹。
思路:
題目要求高度平衡糖驴,所以需要我們把數(shù)組的中點位置當做根節(jié)點洪唐。
由于二叉搜索樹的中序遍歷結(jié)果就是升序钻蹬,且左子樹所有點的值小于根節(jié)點,因此中點位置左邊是構(gòu)成左子樹的區(qū)間凭需,右邊是構(gòu)成右子樹的區(qū)間问欠,求左右子樹的過程遞歸執(zhí)行就可以了肝匆。
public TreeNode sortedArrayToBST(int[] nums) {
if (nums == null || nums.length == 0) {
return null;
}
return helper(0, nums.length - 1, nums);
}
public TreeNode helper(int start, int end, int[] nums) {
if (start > end) {
return null;
}
int middle = start + (end - start) / 2;
TreeNode root = new TreeNode(nums[middle]);
root.left = helper(start, middle - 1, nums);
root.right = helper(middle + 1, end, nums);
return root;
}