题解 | #重建二叉树#

重建二叉树

http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6

class Solution {
public:
    TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
        if(!pre.size()) return NULL;
        int index=-1;
        for(int i=0; i<vin.size(); i++)
            if(vin[i]==pre[0])
                index=i;
        TreeNode *node=new TreeNode(pre[0]);
        if(index>0)
        {
            vector<int> leftpre(pre.begin()+1,pre.begin()+index+1),
            leftvin(vin.begin(),vin.begin()+index);
            node->left=reConstructBinaryTree(leftpre,leftvin);
        }
        if(index<vin.size()-1)
        {
            vector<int> rightpre(pre.begin()+index+1,pre.end()),
            rightvin(vin.begin()+index+1,vin.end());
            node->right=reConstructBinaryTree(rightpre,rightvin);
        }
        return node;
    }
};
全部评论

相关推荐

秋招之BrianGriffin:你再跟他说华为工资也低(相对互联网)就可以享受私信爆炸了😋
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务