1086. Tree Traversals Again (25)

简介: //push是前序遍历 pop是中序遍历 根据前序遍历和中序遍历 输出后序遍历#include #include #include using namespace std;int n;vector pre, in...
//push是前序遍历 pop是中序遍历 根据前序遍历和中序遍历 输出后序遍历
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int n;
vector<int> pre, in, post;
struct node { int data; node *l, *r; };
node *build(int preL, int preR, int inL, int inR){
    if(preL > preR) return NULL;
    node *root = new node;
    root->data = pre[preL];
    int k;
    for (k = inL; k <= inR; k++)
        if(in[k] == pre[preL]) break;
    int leftnum = k - inL;
    root->l = build(preL + 1, preL + leftnum, inL, k - 1);
    root->r = build(preL + leftnum + 1, preR, k + 1, inR);
    return root;
}
void postOrder(node *root){
    if (root == NULL) return;
    if(root->l) postOrder(root->l);
    if(root->r) postOrder(root->r);
    post.push_back(root->data);
}

int main(){
    cin >> n;
    stack<int> st;
    for (int i = 0; i < n * 2; i++) {
        string s;
        cin >> s;
        if (s == "Push") {
            int t;
            cin >> t;
            st.push(t);
            pre.push_back(t);
        }else{
            int t = st.top();
            st.pop();
            in.push_back(t);
        }
    }
    node *root = build(0, n - 1, 0, n - 1);
    postOrder(root);
    for (int i = 0; i < n; i++)
        printf("%d%c", post[i], i == n - 1 ? '\n' : ' ');

    return 0;
}
目录
相关文章
|
10月前
|
测试技术 持续交付
探索软件测试中的自动化测试策略
随着软件开发周期的加速和市场需求的不断增长,传统的手动软件测试方法已难以满足现代软件开发的高效性和准确性要求。本文旨在探讨自动化测试在软件测试中的重要性、实施策略及其对提高软件质量的影响。通过分析自动化测试的优势与挑战,以及提供实用的自动化测试工具和框架选择指南,旨在帮助读者理解并应用自动化测试以提升软件开发效率和产品质量。
|
9月前
|
弹性计算 人工智能 自然语言处理
操作系统智能助手OS Copilot新功能上线,快来体验吧
阿里云智能助手OS Copilot是一款基于大模型的Linux操作系统智能助手,支持自然语言问答、辅助命令执行、系统运维调优等功能。通过自然语言处理技术,OS Copilot能够帮助用户轻松完成复杂的命令操作和系统管理任务,极大提升了操作便捷性和效率。用户可以通过简单的对话获取所需的操作指令,降低了对专业技能的要求。
|
存储 Java 程序员
【C语言入门】C语言入门:探索编程世界的基础概念
【C语言入门】C语言入门:探索编程世界的基础概念
273 2
|
JavaScript API 开发者
vue3与vue2的区别
vue3与vue2的区别
200 2
|
缓存 移动开发 前端开发
html性能优化
【4月更文挑战第26天】html性能优化
125 1
|
Cloud Native Linux 数据中心
龙蜥白皮书精选:云原生混部资源隔离技术
不论是源码透明度,还是技术深度,以及场景的广度,龙蜥在资源隔离技术都是用户第一选择。
|
缓存 Java 开发者
《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程(二)
《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程(二)
511 0
《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程(二)
|
机器学习/深度学习 人工智能 Go
Google 在 2023 开发者大会上的 AI 革命
Google 在 2023 开发者大会上的 AI 革命
150 0
|
存储 算法 C++
STL——list、stack与queue
STL——list、stack与queue
|
数据库
返回Web请求的内容
返回Web请求的内容
124 0