题目
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.
解答
类似于二分法,利用递归求解。心得:写递归的时候首先要设置递归结束条件,然后将子问题的return和最终问题的return统一起来。代码如下:
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
int start = 0, end = nums.length - 1;
return addNode(nums, start, end);
}
public TreeNode addNode(int[] nums, int start, int end) {
//设置结束条件
if (start > end) return null;
int mid = (start + end) / 2;
TreeNode p = new TreeNode(nums[mid]);
p.left = addNode(nums, start, mid - 1);
p.right = addNode(nums, mid + 1, end);
return p;
}
}