团体程序设计天梯赛 L2-006. 树的遍历 L2-011. 玩转二叉树
L2-006. 树的遍历
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h> struct node
{
long left,right;
}tree[]; long a[],b[]; void work(long l,long r,long p,long q,long fa,long cond)
{
long root=a[r],pos;
for (pos=p;pos<=q;pos++)
if (b[pos]==root)
break;
if (cond==)
tree[fa].left=root;
else
tree[fa].right=root;
if (p<=pos-)
work(l,l+pos--p,p,pos-,root,);
if (pos+<=q)
work(l+pos-p,r-,pos+,q,root,);
} int main()
{
long i,head,tail,n;
long q[];
scanf("%ld",&n);
for (i=;i<=n;i++)
{
scanf("%ld",&a[i]);
tree[a[i]].left=;
tree[a[i]].right=;
}
for (i=;i<=n;i++)
scanf("%ld",&b[i]);
work(,n,,n,,); head=;
tail=;
q[]=a[n];
while (head<tail)
{
head++;
printf("%ld",q[head]);
if (tree[q[head]].left!=)
{
tail++;
q[tail]=tree[q[head]].left;
}
if (tree[q[head]].right!=)
{
tail++;
q[tail]=tree[q[head]].right;
}
if (head!=tail)
printf(" ");
}
return ;
}
L2-011. 玩转二叉树
#include <stdio.h>
#include <stdlib.h> struct node
{
long left,right;
}tree[]; long a[],b[],q[]; void work(long x,long y,long p,long q,long father,long cond)
{
long pos,count;
if (father!=)
{
if (cond==)
tree[father].left=b[p];
else
tree[father].right=b[p];
}
for (pos=x;pos<=y;pos++)
if (a[pos]==b[p])
break;
count=pos-x;
if (count>)
work(x,pos-,p+,p+count,b[p],);
if (y-pos>)
work(pos+,y,p+count+,q,b[p],);
} void change(long d)
{
if (tree[d].left== && tree[d].right==)
return ;
long temp;
temp=tree[d].left;
tree[d].left=tree[d].right;
tree[d].right=temp;
change(tree[d].left);
change(tree[d].right);
} int main()
{
long n,i,head,tail;
scanf("%ld",&n);
for (i=;i<=n;i++)
scanf("%ld",&a[i]); //mid
for (i=;i<=n;i++)
scanf("%ld",&b[i]); //pre
for (i=;i<=n;i++)
{
tree[i].left=;
tree[i].right=;
}
work(,n,,n,,);
change(b[]); head=; tail=;
q[]=b[];
while (head<tail)
{
head++;
printf("%ld",q[head]);
if (tree[q[head]].left!=)
{
tail++;
q[tail]=tree[q[head]].left;
}
if (tree[q[head]].right!=)
{
tail++;
q[tail]=tree[q[head]].right;
}
if (head!=tail)
printf(" "); //output不能多余的空格
}
return ;
}
团体程序设计天梯赛 L2-006. 树的遍历 L2-011. 玩转二叉树的更多相关文章
- 树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)
前提是数的范围较小 1 数据范围:O(n) 2 查第k大的数i:log(n)(树状数组查询小于等于i的数目)*log(n)(二分找到i) 3 添加:log(n) (树状数组) 4 删除:log(n) ...
- 团体程序设计天梯赛(CCCC) L3009 长城 方法证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code
- 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明
团体程序设计天梯赛代码.体现代码技巧,比赛技巧. https://github.com/congmingyige/cccc_code #include <cstdio> #include ...
- PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集
L2-001 紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...
- PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)
PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++: 欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...
随机推荐
- 第十二次ScrumMeeting博客
第十二次ScrumMeeting博客 本次会议于11月30日(四)22时整在3公寓725房间召开,持续35分钟. 与会人员:刘畅.辛德泰.张安澜.赵奕.方科栋. 1. 每个人的工作(有Issue的内容 ...
- quartusII13.0使用教程
1.新建工程项目,填写项目存储路径和工程名,不要出现中文路径 2.添加已存在文件(可选),在[File name]下选择已经存在的工程项目,利用[Add]或[Add all]命令添加文件到新工程,点击 ...
- printf in KEIL C51
转自:http://blog.csdn.net/it1988888/article/details/8821713 在keil中printf默认是向串口中发送数据的,所以,如果应用该函数,必须先初始化 ...
- 英文词频统计的java实现方法
需求概要 1.读取文件,文件内包可含英文字符,及常见标点,空格级换行符. 2.统计英文单词在本文件的出现次数 3.将统计结果排序 4.显示排序结果 分析 1.读取文件可使用BufferedReader ...
- Rsyslog日志服务搭建
rsyslog是比syslog功能更强大的日志记录系统,可以将日志输出到文件,数据库和其它程序.Centos 6.x默认的rsyslog版本是5.x. 网上关于rsyslog的安装配置文档倒是不少,但 ...
- getResource()的使用总结 ;
1.通过ClassLoader来加载getResource()时不需要加 "/" 因为source是从main开始的; Thread.currentThread().getCont ...
- windows多线程(五) 互斥量 Mutex
一.互斥量 互斥量是windows的一个内核对象,互斥量与关键段的作用相似,可以用来确保全局资源的互斥访问.并且互斥量可以用在不同的进程中的线程互斥访问全局资源. 二.相关函数说明 使用互斥量Mute ...
- 使用Word 进行UTF8 以及字符串编码的转换操作
1. 使用Word文档能够实现 字符串和utf8编码的转换. 快捷键是 ALT+X 在知乎的一个里面看到一个说法: ㍾ ㍽ ㍼ ㍻ - 这四个在Unicode表里是倒序排列的,而且只预留了这四个年号, ...
- 为什么选择 .NET Core?
为什么选择.NETCore? 学习新的开发框架是一项巨大的投资.您需要学习如何在新框架中编写,构建,测试,部署和维护应用程序.作为开发人员,有许多框架可供选择,很难知道什么是最适合的.即使您正在使用 ...
- Struts2+json+hignchart(简单柱状图实现--适合jquery小白)
做了一个简单的基于Struts2 + Json + HighChart的小例子,费了一下午+晚上的时间,虽然简单,但对于我这种Jquery+Ajax小白的人还是很值得记录的. 哈哈哈 # 0. 关键点 ...