题解

实际上是一个模拟题,详细的看一下根据前序序列和中序序列建立二叉树的sua
代码:

class Solution {
public:
    TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
        vector<int> pre_left;
        vector<int> pre_right;
        vector<int> vin_left;
        vector<int> vin_right;
        if(pre.size() == 0 || vin.size() == 0)
        {
            return nullptr;
        }
        int head = pre[0];

        int split_index = -1;
        bool flag = 0;
        for(int i = 0; i < vin.size(); i++)
        {
            if(vin[i] == head)
            {
                flag = 1;
                split_index = i;
                continue;
            }
            else if(flag == 0)
            {
                vin_left.push_back(vin[i]);
            }
            else if(flag == 1)
            {
                vin_right.push_back(vin[i]);
            }
        }
        for(int i = 1 ; i <= vin_left.size(); i++)
        {
            pre_left.push_back(pre[i]);
        }
        for(int i = vin_left.size() + 1; i < pre.size(); i++)
        {
            pre_right.push_back(pre[i]);
        }
        TreeNode* root = new TreeNode(head);

        root->left = reConstructBinaryTree(pre_left, vin_left);
        root->right = reConstructBinaryTree(pre_right, vin_right);

        return root;
    }
};
全部评论

相关推荐

2024-11-25 20:48
门头沟学院 Java
北街旧亭:每次点都有点哈 一键发评里面带书籍图标的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2024-11-19 18:24
已编辑
木皆从算法到做法:逆天,前段时间数马各个平台都在宣传说今年大招特招
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务