`

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.

public TreeNode sortedArrayToBST(int[] num) {
    if(num.length==0) return null;
    return toBST(num, 0, num.length-1);
}

private TreeNode toBST(int[] num, int start, int end) {
    if(start > end) {
        return null;
    }
    int m = (start+end)>>1;
    TreeNode node = new TreeNode(num[m]);
    node.left = toBST(num, start, m-1);
    node.right = toBST(num, m+1, end);
    return node;
}

 

TreeNode* sortedArrayToBST(vector<int>& nums) {
    if(!nums.size()) return NULL;
    int *arr = &nums[0];
    return toBST(arr, nums.size());
}

TreeNode *toBST(int* nums, int n) {
    if(n == 0) return NULL;
    int m = n / 2;
    TreeNode *root = new TreeNode(nums[m]);
    root->left = toBST(nums, m);
    root->right = toBST(nums+m+1, n-m-1);
    return root;
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics