Given an integer array nums
where the elements are sorted in ascending order, convert it to a
height-balanced binary search tree.
Example:
Input: nums = [-10,-3,0,5,9]
Output: [0,-3,9,-10,null,5]
Explanation: [0,-10,5,null,-3,null,9] is also accepted:
Solution:
class Solution {
int[] nums;
public TreeNode helper(int left, int right){
if(left > right) return null;
int p = left + (right - left) / 2;
TreeNode root = new TreeNode(nums[p]);
root.left = helper(left, p - 1);
root.right = helper(p + 1, right);
return root;
}
public TreeNode sortedArrayToBST(int[] nums) {
this.nums = nums;
return helper(0, nums.length - 1);
}
}
Logic:
- make the scope of int[] nums as a global array
- have a helper function and two variable to find the root
- and teturn the array
- in the main method pass the arguement to the helper function
Hints:
- make sense of recursion
- draw the stack to understand