Sunday, September 1, 2013

Sorted Array to Balanced BST

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

TreeNode* getnode(int x)
{
    TreeNode* t = (TreeNode *)malloc(sizeof(TreeNode));
t->val = x;
t->left = NULL;
t->right =NULL;
return t;
}
TreeNode *sortedArrayToBST(vector<int> &num, int left, int right)
{
    if(left > right)
        return NULL;
    int mid = (left + right) / 2;
    TreeNode* root  = getnode(num[mid]);   
    root->left = sortedArrayToBST(num, left, mid -1);
    root->right = sortedArrayToBST(num, mid+1, right);
    return root;
}
TreeNode *sortedArrayToBST(vector<int> &num) {
        if(num.size() <= 0)
            return NULL;
    return sortedArrayToBST(num, 0, num.size() -1);
}

No comments:

Post a Comment