重建二叉树 -- 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());
    }

};
全部评论

相关推荐

点赞 评论 收藏
分享
牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
让资本家给我当牛做马:26的秋招还没开始啊?你找的是实习?实习的话你马上就研三了为什么还要实习?
点赞 评论 收藏
分享
本2硕9,秋招不想努力海投了
小何和:行情再不好也不可能拒绝你,不可能只要双9的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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