您的位置:首页 > 其它

[Leetcode 108, Meidum] Convert Sorted Array to Binary Search Tree

2015-07-23 01:39 525 查看
Problem:

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

Analysis:

Solutions:

C++:

TreeNode* BuildBSTAux(vector<int>& nums, int start, int end)
    {
        TreeNode *root = NULL;
        if(start == end)
            root= new TreeNode(nums[start]);
        else if(start < end) {
            int mid = (start + end) / 2;
            root = new TreeNode(nums[mid]);
            if(start == mid - 1)
                root->left = new TreeNode(nums[start]);
            else if(start < mid - 1)
                root->left = BuildBSTAux(nums, start, mid - 1);
                
            if(end == mid + 1)
                root->right = new TreeNode(nums[end]);
            else if(end > mid + 1)
                root->right = BuildBSTAux(nums, mid + 1, end);
        }
        return root;
    }
    
    TreeNode* sortedArrayToBST(vector<int>& nums) {
        if(nums.empty())
            return NULL;
        else if(nums.size() == 1)
            return new TreeNode(nums[0]);
            
        TreeNode *root = BuildBSTAux(nums, 0, nums.size() - 1);
        return root;
    }
Java:

Python:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: