博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
团体程序设计天梯赛-练习集L2-011. 玩转二叉树
阅读量:5267 次
发布时间:2019-06-14

本文共 1458 字,大约阅读时间需要 4 分钟。

L2-011. 玩转二叉树

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越

给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。

输入格式:

输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。

输出格式:

在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。

输入样例:
71 2 3 4 5 6 74 1 3 2 6 5 7
输出样例:
4 6 1 7 5 3 2 思路:跟树的遍历一样
1 #include
2 using namespace std; 3 #define maxn 1000 4 struct Node{ 5 int l; 6 int r; 7 }aa[maxn]; 8 int f[maxn],m[maxn]; 9 int build(int la,int ra,int lb,int rb){10 if(la>ra)11 return 0;12 int root,p1,p2;13 root=f[lb];14 p1=la;15 while(m[p1]!=root) p1++;16 p2=p1-la;17 aa[root].l=build(la,p1-1,lb+1,lb+p2);18 aa[root].r=build(p1+1,ra,lb+p2+1,rb);19 return root;20 }21 void bfs(int root){22 queue
q;23 vector
v;24 q.push(root);25 while(!q.empty()){ 26 int w=q.front();27 q.pop();28 if(w==0)29 break;30 v.push_back(w);31 if(aa[w].r!=0) q.push(aa[w].r);32 if(aa[w].l!=0) q.push(aa[w].l);33 } 34 int len=v.size();35 for(int i=0;i
>n;41 for(int i=0;i
>m[i];42 for(int i=0;i
>f[i];43 build(0,n-1,0,n-1);44 int root=f[0];45 bfs(root);46 return 0;47 }

 

转载于:https://www.cnblogs.com/zhien-aa/p/5660019.html

你可能感兴趣的文章
hdu 3938 并查集
查看>>
instanceof
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
2015/8/4 告别飞思卡尔,抛下包袱上路
查看>>
软件开发与模型
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>