【TOJ 1224】数据结构练习题――后序遍历二叉树
Description
给定一颗二叉树,要求输出二叉树的深度以及后序遍历二叉树得到的序列。本题假设二叉树的结点数不超过1000。
Input
输入数据分为多组,第一行是测试数据的组数n,下面的n行分别代表一棵二叉树。每棵二叉树的结点均为正整数,数据为0代表当前结点为空,数据为-1代表二叉树数据输入结束,-1不作处理。二叉树的构造按照层次顺序(即第1层1个整数,第2层2个,第3层4个,第4层有8个......,如果某个结点不存在以0代替)。
Output
输出每棵二叉树的深度以及后序遍历二叉树得到的序列。
Sample input
2
1 -1
1 2 0 3 4 -1
Sample output
1 1
3 3 4 2 1
#include<iostream> #include<cstring> #include<algorithm> using namespace std; int a[],k; //k是二叉树元素总数 int post(int n) //n是从1开始的参数,表示遍历到的第n个元素 { if(n>k)return ; if(a[*n]!=) //避免无效遍历导致的内存使用过大 post(*n); //先从左遍历 if(a[*n+]!=) post(*n+); //再从右遍历 if(a[n]) cout<<" "<<a[n]; } int deep(int n) { int m; if(n>k||a[n]==)return ; int left=deep(*n); int right=deep(*n+); m=max(left,right)+; return m; } int main() { int t,n; cin>>t; while(t--) { k=; while(cin>>n) { if(n==-)break; a[++k]=n; } cout<<deep(); //深度从1开始递归 post(); //中序遍历也从1开始递归 cout<<endl; memset(a,,sizeof a); } return ; }
相关推荐
baike 2020-05-09
sunjunior 2020-04-08
ipqtjmqj 2020-02-14
choupiaoyi 2020-02-01
mieleizhi0 2019-12-31
郭岚 2019-11-04
徐建岗网络管理 2019-11-02
Sophiego 2019-05-18
Cypress 2019-07-01
jaminliu0 2019-06-29
YUAN 2019-06-28
Lenskit 2019-06-26
WindChaser 2019-06-21
xingweiyong 2015-04-07
算法魔功 2018-07-24
王少雷的黑马 2017-02-17
Wcplus 2018-05-07
Masimaro 2017-04-13
zhglinux 2018-07-27
龙源潇俊 2018-05-08
python的学习之路 2018-05-25
梦呓bolg 2017-12-12
yhguo00 2017-11-24
tansuo 2015-08-30
wangxiaohua 2015-08-11
明立 2017-06-30
LeonTom 2017-06-02
electricperi 2015-02-15
tansuo 2015-01-12
pythonpycharm 2016-05-24
大数据分析BDA 2014-08-02
tansuo 2014-07-30
云华00 2013-11-10
Pythonandme 2019-03-06
pythoncream 2018-12-24
guyuanxiang 2014-04-29
妖怪哪里跑 2019-02-21
PHP100 2019-03-28