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

};
全部评论

相关推荐

点赞 评论 收藏
分享
程序员小白条:主要没亮点,项目也是网上的,平平无奇,那只能海投了,奖项总得有一些,然后就是现在最好是前后端都会,自己能做项目并且运维的,要么找星球项目改改,要么找个开源项目改改,自己能拓展功能才是主要的,跟做效率很低很低
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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