lintcode-把排序数组转换为高度最小的二叉搜索树-177

给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。


样例

给出数组 [1,2,3,4,5,6,7], 返回

 4 / \ 2 6 / \ / \ 1 3 5 7 

/**
 * Definition of TreeNode:
 * class TreeNode {
 * public:
 *     int val;
 *     TreeNode *left, *right;
 *     TreeNode(int val) {
 *         this->val = val;
 *         this->left = this->right = NULL;
 *     }
 * }
 */
class Solution {
public:
    void create(TreeNode **root,vector<int> arr,int begin,int end){
        if(begin>=end)
            return ;
        *root=new(TreeNode);
        (*root)->val=arr[begin+(end-begin)/2];
        create(&(*root)->left,arr,begin,begin+(end-begin)/2);
        create(&(*root)->right,arr,begin+(end-begin)/2+1,end);
    }
    TreeNode *sortedArrayToBST(vector<int> &A) {
        if(A.empty())
            return NULL;
        TreeNode *root;
        create(&root,A,0,A.size());
        return root;    
    }
};



你可能感兴趣的:(lintcode-把排序数组转换为高度最小的二叉搜索树-177)