[LeetCode] Convert Sorted Array to Binary Search Tree

Convert Sorted Array to Binary Search Tree With Minimal Height

Given a sorted (increasing order) array, Convert it to create a binary
tree with minimal height. Notice There may exist multiple valid
solutions, return any of them.node

Divide-Conquer

Time Complexity
O(N)
Space Complexity
O(logn)ide

思路

根据Binary Search Tree的性质,问题转化为找一个sorted array里的中位数,用一个helper函数,divide and conquer一路找中点,再经过前序遍历的方法把tree build起来函数

代码

public TreeNode sortedArrayToBST(int[] A) {  
    // write your code here
    //corner case
    if(A == null || A.length == 0) return null;
    return helper(A, 0, A.length - 1);
}

private TreeNode helper(int[] A, int left, int right){
    //base case
    //preorder
    if(left > right) return null;
    
    int mid = left + (right - left)/2;
    TreeNode node = new TreeNode(A[mid]);
    
     node.left = helper(A, left, mid - 1);
     node.right = helper(A, mid + 1, right);
     return node;
}
相关文章
相关标签/搜索