Convert Sorted Array to Binary Search Tree

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

/**

 * Definition for binary tree

 * struct TreeNode {

 *     int val;

 *     TreeNode *left;

 *     TreeNode *right;

 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}

 * };

 */

class Solution {

public:

    TreeNode *sortedArrayToBST(vector<int> &num) 

    {

        return getBSTtree(num,0,num.size()-1);

    }

    TreeNode* getBSTtree(vector<int> & num, int left,int right)

    {

        if(left>right)

            return NULL;

        TreeNode *root;

        if(right-left+1==1)

        {

            root=new TreeNode(num[left]);

            return root;

        }

        int mid=(left+right)/2;

        root=new TreeNode(num[mid]);

        root->left=getBSTtree(num,left,mid-1);

        root->right=getBSTtree(num,mid+1,right);

    }

};

 

你可能感兴趣的:(Binary search)