leetcode-108. Convert Sorted Array to Binary Search Tree
题目:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
这题的基本思路就是2分法,由于是排好序的,想要构造一个树,我们只要找到中点就可以了。然后左边的数都是左节点的,右边的都是右节点的。迭代运算就好。
还是需要注意定位i和j不可以用绝对坐标。必须是相对的坐标
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
return helper(nums,0,nums.length-1);
}
private TreeNode helper(int[] nums,int i,int j){
if(i>j) return null;
if(i==j) return new TreeNode(nums[i]);
TreeNode node = new TreeNode(nums[(i+j)/2]);
node.left = helper(nums,i,(i+j)/2-1);
node.right = helper(nums,(i+j)/2+1,j);
return node;
}
}