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

Tree Traversals Again

一个中序遍历的非递归实现可以使用栈。 例如,假设对一棵 6 个节点(键值编号 1 到 6)的二叉树进行中序遍历,其栈操作序列为: push(1); push(2); push(3); pop(); pop(); push(4); pop(); pop(); push(5); push(6); pop(); pop()。 则可以由此操作序列唯一地构造出一棵二叉树(见图1)。你的任务是输出该树的后序遍历序列。

Figure 1

输入格式:

每个输入文件包含一个测试用例。第一行包含一个正整数 NN(≤30≤30),表示树的节点总数(节点编号为 1 到 NN)。接下来 2N2N 行,每行描述一次栈操作,格式为:

Push X

Pop

其中Push X表示将编号为 X 的节点压入栈顶,Pop表示弹出栈顶节点。

输出格式:

对于每个测试用例,输出对应二叉树的后序遍历序列,所有数字用一个空格分隔,行末不得有多余空格。题目保证解一定存在。

样例输入:

6 Push 1 Push 2 Push 3 Pop Pop Push 4 Pop Pop Push 5 Push 6 Pop Pop

样例输出:

3 4 2 6 5 1
#include <iostream> #include <bits/stdc++.h> using namespace std; vector<int> zhong, qian; vector<int> ans; struct Node{ int val; Node *l; Node *r; }; Node* create(int v){ Node *p=new Node; p->val=v; p->l=p->r=NULL; return p; } Node* build(int ql,int qr,int zl,int zr,vector<int> qian,vector<int> zhong){ if(ql>qr)return 0; int root=qian[ql]; Node* t=create(root); int k=0; for(k=zl;k<=zr;++k){ if(zhong[k]==root)break; } int len=k-zl; t->l=build(ql+1,ql+len,zl,k-1,qian,zhong); t->r=build(ql+len+1,qr,k+1,zr,qian,zhong); return t; } void pri(Node* root) { if (!root) return; pri(root->l); pri(root->r); ans.push_back(root->val); } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n;cin>>n;cin.ignore(); stack<int> st; for(int i=0;i<2*n;++i){ string s;getline(cin,s); if(s.find("Push")!=string::npos){ int k=stoi(s.substr(5)); qian.push_back(k); st.push(k); }else{ zhong.push_back(st.top()); st.pop(); } } Node* root=build(0,n-1,0,n-1,qian,zhong); pri(root); for(int i=0;i<ans.size();i++){ if(i>0) cout<<" "; cout<<ans[i]; } return 0; }
http://www.jsqmd.com/news/461169/

相关文章:

  • 2026年染发剂操作简单的品牌推荐及使用指南 - 品牌排行榜
  • 2026年不沾头皮且不伤头发操作简单的染发膏推荐 - 品牌排行榜
  • Java学习日记(第六天)
  • 别再用国外第三方视觉软件了!C# WinForms+YOLOv9可商用外观缺陷检测全流程,从需求调研到批量部署附20个工业级坑
  • Python内存管理的深度剖析:超越垃圾回收的底层机制
  • Flutter 三方库 simple_json 的鸿蒙化适配指南 - 实现极简主义的 JSON 解析与映射、支持端侧零负担的数据对象序列化实战
  • Day 1 - TypeScript 环境搭建与初体验 ??
  • 智路慧眼:基于 YOLOv12 + DeepSeek 的道路缺陷智能检测与养护决策系统 智慧交通-**基于YOLOv12+DeepSeek的道路缺陷智能检测系统**
  • 这个新闻居然是真的——一颗大脑被上传进电脑,然后活了
  • Flutter 三方库 l10n_countries 的鸿蒙化适配指南 - 实现全球 250+ 国家与地区的本地化信息映射、支持端侧多语言地理名称展示与旗帜图标索引实战
  • RL VLA - kirin
  • C语言第37章 调试技巧与常见错误:理论与实操精解-001篇
  • C语言第37章 调试技巧与常见错误:理论与实操精解-002篇
  • Flutter 三方库 hrk_logging 的鸿蒙化适配指南 - 实现标准化分层日志记录、支持多目的地输出与日志分级过滤
  • Flutter 三方库 fluent_result 的鸿蒙化适配指南 - 实现优雅的函数式错误处理模型、支持透明的结果封装与业务逻辑流转控制
  • Flutter 三方库 crypto 的鸿蒙化适配指南 - 实现具备工业级哈希算法与消息摘要计算的安全底座、支持端侧数据校验与数字签名实战
  • Flutter 三方库 shelf_web_socket 的鸿蒙化适配指南 - 实现具备高性能全双工长连接与协议协商能力的端侧服务端架构、支持分布式实时信令与多端协同实战
  • 别只用标准功能码了!C#扩展Modbus协议:自定义0x6F批量写入+设备专属异常码,效率提3倍
  • 降AI率工具哪个效果好?2026年主流降AI工具综合测评对比! - agihub
  • 知网AI率狂飙到80%?实测7款主流降AI神器! - 老米_专讲AIGC率
  • 2026年主流降AI工具横评:哪款能帮你把AI率降到个位数? - 晨晨_分享AI
  • 【航天存储公司】推荐!解决数据存储安全痛点的靠谱企业排行?
  • 计算机专业毕业设计 / 课程设计全攻略
  • 2026 计算机毕业设计全攻略:源码 + 教程 + 答辩指导
  • 2026 计算机毕设终极指南:Java/Python/单片机/小程序,源码+文档+保姆级教程
  • 2026计算机毕设终究救赎:从选题到丝滑答辩,这一篇就够了!
  • springboot基于android的ai历史模拟交互系统的设计与实现
  • springboot基于Android的健身房助手系统app
  • 警惕!小龙虾虽好,但别轻易装进你的工作电脑
  • springboot基于Android的医院陪诊护理服务系统APP