当前位置: 首页 > news >正文

算法——先序中序还原二叉树

晴问算法

记得在dfs那里给指针和数组加&,指针不加不会修改,数组不加会报错

#include <bits/stdc++.h>

using namespace std;

vector<int> preOrder, inOrder;
vector<int> result;


struct TreeNode {
    int data;
    TreeNode *left;
    TreeNode *right;

    TreeNode(int data) : data(data), left(nullptr), right(nullptr) {}
};


void dfs(TreeNode* &root, vector<int> &pre, vector<int> &in) {
    if (pre.empty()||in.empty()) return;
    int rootNum = pre[0];
    root = new TreeNode(rootNum);
    int root_Index;
    for (root_Index = 0; root_Index < in.size(); ++root_Index) {
        if (in[root_Index] == rootNum) break;
    }

    vector<int> vec1(pre.begin() + 1, pre.begin() + root_Index + 1);
    vector<int> vec2(pre.begin() + root_Index + 1, pre.end());
    vector<int> vec3(in.begin(), in.begin() + root_Index);
    vector<int> vec4(in.begin() + root_Index + 1, in.end());

    dfs(root->left, vec1, vec3);
    dfs(root->right, vec2, vec4);


}


void PostOrder(TreeNode *root) {
    if (root == nullptr) return;
    PostOrder(root->left);
    PostOrder(root->right);
    result.push_back(root->data);
}

int main() {

    int n;
    cin >> n;

    for (int i = 0; i < n; ++i) {
        int num;
        cin >> num;
        preOrder.push_back(num);
    }
    for (int i = 0; i < n; ++i) {
        int num;
        cin >> num;
        inOrder.push_back(num);
    }

    TreeNode *root;
    dfs(root, preOrder, inOrder);
    PostOrder(root);

    for (int i = 0; i < result.size(); ++i) {
        if (i != 0) cout << " ";
        cout << result[i];
    }

    return 0;
}

相关文章:

  • ubuntu测试指定文件夹的读写速度
  • 深度学习-145-Text2SQL之基于官方提示词模板进行交互
  • VMware安装Centos
  • leetcode日记(100)填充每个节点的下一个右侧节点指针
  • go程序调用k8s pod副本的名称IP手动赋值给configmap的参数
  • 麒麟服务器操作系统Go环境部署手册
  • 麒麟服务器操作系统Redis部署手册
  • BGP实验(二)路由反射器
  • Spring Cloud Config - 动态配置管理与高可用治理
  • LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 论文阅读
  • uniapp移动端图片比较器组件,仿英伟达官网rtx光追图片比较器功能
  • ⚡️Jolt -- 通过JSON配置来处理复杂数据转换的工具
  • [Java实战]Spring Boot服务CPU 100%问题排查:从定位到解决
  • JS - 重点JS方法温故而知新
  • ROS2 系统架构
  • Linux调度器 --- 负载均衡的存在的问题
  • AI 助力医学统计:复杂临床数据处理的 “救星”
  • 【Oracle】19c数据库控制文件多路径配置
  • Docker 容器指标搜集工具cAdvisor
  • 一款基于Python的从常规文档里提取图片的简单工具开发方案
  • 国家外汇管理局:4月货物贸易项下跨境资金净流入649亿美元
  • 被央视曝光“废旧厂区沦为垃圾山”,江西萍乡成立调查组查处
  • 2025吉林市马拉松开跑,用赛道绘制“博物馆之城”动感地图
  • 专利申请全球领先!去年我国卫星导航与位置服务产值超5700亿
  • 就规范涉企行政执法专项行动有关问题,司法部发布解答
  • 阿里上财年营收增6%,蒋凡:会积极投资,把更多淘宝用户转变成即时零售用户