题解

实际上是一个模拟题,详细的看一下根据前序序列和中序序列建立二叉树的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;
    }
};
全部评论

相关推荐

劝退式:感觉有人回才是不正常的
点赞 评论 收藏
分享
不懂!!!:感觉你的项目描述太简单了,建议使用star描述法优化提炼一下,就是使用什么技术或方案解决了什么问题,有什么效果或成果,例如:对axios进行了二次封装,实现了请求的统一管理、错误的集中处理以及接口调用的简化,显著提高了开发效率和代码维护性,使用canvas技术实现了路线绘制功能,通过定义路径绘制函数和动态更新机制,满足了简化的导航可视化需求,提升了用户体验。像什么是使用其他组件库,基本功能描述就最好不要写到项目成果里面去了,加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务