[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;
}
相關文章
相關標籤/搜索