您的位置:首页 > 其它

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

2017-04-20 16:49 232 查看
问题:

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


 注意事项


There may exist multiple valid solutions, return any of them.

您在真实的面试中是否遇到过这个题? 

Yes

样例

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


代码:

class Solution {

public:

    /**

     * @param A: A sorted (increasing order) array

     * @return: A tree node

     */

    TreeNode *sort(vector<int> &A,int begin,int end)  

{   if(begin>end)

    return NULL;

    int mid=(begin+end)/2;

    TreeNode *root=new TreeNode(A[mid]);

    root->left=sort(A,begin,mid-1);

    root->right=sort(A,mid+1,end);

    return root;

}

TreeNode *sortedArrayToBST(vector<int> &A) {

        // write your code here

        if(A.size()==0)

        return NULL;

        int begin=0;

        int end=A.size()-1;

        int mid=(begin+end)/2;

        TreeNode *root=new TreeNode(A[mid]);

        root->left=sort(A,begin,mid-1);

        root->right=sort(A,mid+1,end);

       return root;}

};

思路:一开始要将数组一分为二,分别作为二叉树的左右子树。递归直至数组内无元素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: