定时作业-二叉树的建立与遍历
来源:互联网 发布:阿里云账号注销 编辑:程序博客网 时间:2024/05/16 19:44
题目描述
给出一棵二叉树,分别输出先序、中序、后序遍历结果。
输入
第1行:结点数n(1<=n<=100)
以下若干行,每行3个整数,分别表示父结点、左孩子、右孩子。若没有孩子,对应的整数为0.
输出
第1行:树根
第2行:先序遍历结果,数字间用1个空格分开。
第3行:中序遍历结果,数字间用1个空格分开。
第4行:后序遍历结果,数字间用1个空格分开。
样例输入
8
1 2 4
2 0 0
4 8 0
3 1 5
5 6 0
6 0 7
8 0 0
7 0 0
样例输出
3
3 1 2 4 8 5 6 7
2 1 8 4 3 6 7 5
给出一棵二叉树,分别输出先序、中序、后序遍历结果。
输入
第1行:结点数n(1<=n<=100)
以下若干行,每行3个整数,分别表示父结点、左孩子、右孩子。若没有孩子,对应的整数为0.
输出
第1行:树根
第2行:先序遍历结果,数字间用1个空格分开。
第3行:中序遍历结果,数字间用1个空格分开。
第4行:后序遍历结果,数字间用1个空格分开。
样例输入
8
1 2 4
2 0 0
4 8 0
3 1 5
5 6 0
6 0 7
8 0 0
7 0 0
样例输出
3
3 1 2 4 8 5 6 7
2 1 8 4 3 6 7 5
2 8 4 1 7 6 5 3
先说下,先序就是根-左-右,中序就是左-根-右,后序左-右-根
这个嘛...结构体数组分分钟搞定~
嘿嘿嘿.....
直接给代码~不想管格式了嘿嘿嘿~~
#include<cstdio>struct tree{int f,l,r,m;}tr[105];int n;void pr(int x,int num){if(num>n||tr[x].m==0) return;printf("%d ",x);pr(tr[x].l,num+1);pr(tr[x].r,num+1);}void in(int x,int num){if(num>n||tr[x].m==0) return;in(tr[x].l,num+1);printf("%d ",x);in(tr[x].r,num+1);}void pt(int x,int num){if(num>n||tr[x].m==0) return;pt(tr[x].l,num+1);pt(tr[x].r,num+1);printf("%d ",x);}int main(){int i,x,y,z,r;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d%d%d",&x,&y,&z);tr[x].m=x;tr[x].l=y;tr[x].r=z;if(y)tr[tr[x].l].f=x;if(z)tr[tr[x].r].f=x;}for(i=1;i<=n;i++)if(!tr[i].f){r=i;printf("%d\n",tr[i].m);break;}pr(r,1);printf("\n");in(r,1);printf("\n");pt(r,1);printf("\n");}
又不是用指针做的所以懒得多说~
1 0
- 定时作业-二叉树的建立与遍历
- 二叉树的建立与遍历
- c++二叉树的建立与遍历
- 二叉树的建立与先序中序后序遍历
- C++二叉树的建立与遍历
- 二叉树的建立与遍历
- 二叉树的遍历与建立
- 二叉树的建立与遍历
- 二叉树的建立与遍历
- 二叉树的建立与遍历
- 数据结构 二叉树的建立与遍历
- 二叉树的建立与遍历
- 二叉树的建立 与 遍历
- 二叉树的建立与遍历
- 二叉树的建立与遍历
- 二叉树的建立与遍历
- 线索二叉树的建立与遍历
- 二叉树的建立与遍历
- JDBC连接数据库的步骤
- Linux安装JDK和Eclipse安装启动
- 机器学习必备技能
- 变量
- 【29.27%】【hdu 5908】Abelian Period
- 定时作业-二叉树的建立与遍历
- 常量
- 广度优先搜索——水杯倒水问题
- Android之ListView原理学习与优化总结
- hibernate配置文件hibernate.cfg.xml的详细解释
- Gas Station
- 插入排序之希尔(shell)排序
- 【原创】二叉树的建立与遍历(前序遍历、中序遍历、后序遍历)
- comparator接口与Comparable接口的区别