遍历二叉树
遍历二叉树
时间限制: 1.000 Sec 内存限制: 128 MB
题目描述
求一棵二叉树的先序中序后序遍历。

这棵二叉树的先序遍历是:6 1 2 4 5 3
这棵二叉树的中序遍历是:4 2 5 1 3 6
这棵二叉树的后序遍历是:4 5 2 3 1 6

这棵二叉树的先序遍历是:6 1 2 4 5 3
这棵二叉树的中序遍历是:4 2 5 1 3 6
这棵二叉树的后序遍历是:4 5 2 3 1 6
输入
第一行一个整数n,表示树的节点编号是1到n。n不超过1000.
第2行两个数据 表示 1号节点的 左孩子和右孩子编号
第3行两个数据 表示 2号节点的 左孩子和右孩子编号
……
第n+1行两个数据 表示 n号节点的 左孩子和右孩子编号
第2行两个数据 表示 1号节点的 左孩子和右孩子编号
第3行两个数据 表示 2号节点的 左孩子和右孩子编号
……
第n+1行两个数据 表示 n号节点的 左孩子和右孩子编号
输出
3行数据,每行有n个数,空格隔开。
第1行 是先序遍历
第2行 是中序遍历
第3行 是后序遍历
第1行 是先序遍历
第2行 是中序遍历
第3行 是后序遍历
样例
输入
6
2 3
4 5
0 0
0 0
0 0
1 0
输出
6 1 2 4 5 3
4 2 5 1 3 6
4 5 2 3 1 6
代码:
#include<bits/stdc++.h> using namespace std; int n; struct rode{int l,r;}tree[1005]; int qx[1005],zx[1005],hx[1005]; int x,y,z; void dfs(int n){ qx[++x]=n; if(tree[n].l!=0) dfs(tree[n].l); zx[++y]=n; if(tree[n].r!=0) dfs(tree[n].r); hx[++z]=n; } int main() { int roof=1; cin>>n; for(int i=1;i<=n;i++){ cin>>tree[i].l>>tree[i].r; if(tree[i].l==roof||tree[i].r==roof) roof=i; } dfs(roof); for(int i=1;i<n;i++) cout<<qx[i]<<" ";cout<<qx[n]<<endl; for(int i=1;i<n;i++) cout<<zx[i]<<" ";cout<<zx[n]<<endl; for(int i=1;i<n;i++) cout<<hx[i]<<" ";cout<<hx[n]<<endl; return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析