重建二叉树 -- C++迭代器解法

重建二叉树

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

class Solution {
public:
    typedef vector<int>::iterator vit;
    TreeNode* reConstructBinaryTree(const vit &preBeg,const vit &preEnd,
                                   const vit &vinBeg,const vit &vinEnd) {
        if (preBeg == preEnd) return nullptr;
        TreeNode *root = new TreeNode(*preBeg);

        const vit &it = find(vinBeg, vinEnd, *preBeg);
        auto size = it - vinBeg;
//         cout << root->val << size << endl;
        root->left = reConstructBinaryTree(preBeg + 1, preBeg + 1 + size,
                                          vinBeg, it);
        root->right = reConstructBinaryTree(preBeg + 1 + size, preEnd, it + 1, vinEnd);
        return root;
    }

    TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
        return reConstructBinaryTree(pre.begin(), pre.end(), vin.begin(), vin.end());
    }

};
全部评论

相关推荐

牛客46693249...:刷kpi的,海康这个岗位已经有实习生转正了
如何判断面试是否凉了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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