题解 | #重建二叉树#

重建二叉树

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

class Solution {
public:
    TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
        // 递归法
        if(pre.size()==0) return nullptr;
        int first = pre[0],pos_in_mid = 0;
        TreeNode * head = new TreeNode(first);
        for(pos_in_mid = 0; pos_in_mid < vin.size(); pos_in_mid++)
            if(vin[pos_in_mid] == first) break;
        head->left=reConstructBinaryTree({pre.begin()+1,pre.begin()+1+pos_in_mid},{vin.begin(),vin.begin()+pos_in_mid});
        head->right=reConstructBinaryTree({pre.begin()+pos_in_mid+1,pre.end()},{vin.begin()+pos_in_mid+1,vin.end()});
        return head;     
    }
};
全部评论

相关推荐

评论
9
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务