题目链接

已知一棵树的后序遍历顺序和中序遍历顺序,求层次遍历的顺序;

树的四种遍历:

先序遍历:先访问根节点,再访问左子树,最后访问右子树

中序遍历:先访问左子树,再访问根节点,最后访问右子树

后序遍历:先访问左子树,再访问右子树,最后访问根节点

层次遍历:一层一层的访问;

 

完全二叉树的节点关系,在层次遍历中假设根节点的编号是n,左子树的根节点是2*n,右边是2*n+1;

 

本题是已知后序a和中序b:

 由于后序遍历最后访问根节点所以,数组a的最后一个节点一定是根节点,然后在数组b中找到根节点的位置,该位置左边部分一定是该节点的左子树,右边部分一定是右子树的部分,然后根据左边的元素找到在a中的对应位置,靠后面的那个就是子树的根节点,一次递归下去即可;

注意的就是对应区间在a和b数组上的位置关系;

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include <map>
#include <vector>
using namespace std; #define N 31
#define INF 0x3f3f3f3f int a[N], b[N], n, p;
///a数组保存后序,b保存中序,c.num保存层次,c.pos是当这个数是完全二叉树时的位置;
struct node
{
int pos, num;
}c[]; void dfs(int aL, int aR, int pos, int bL, int bR)
{
if(bL > bR || aL > aR)
{
//c[pos] = -INF;
return;
} //c[pos] = a[aR];
c[p].num = a[aR];
c[p++].pos = pos; for(int i=bL; i<=bR; i++)
{
if(b[i] == a[aR])///根节点是a[aR];
{
dfs(aL, aL+i-bL-, pos*, bL, i-);///当前根节点左子树在a数组中的下标是[aL, aL+i-bL-1],在b中的是[bL, i-1];
dfs(aR-(bR-i), aR-, pos*+, i+, bR);///当前根节点右子树在a数组中的下标是[aL-(bR-i), aR-1],在b中的是[bL, i-1];
}
}
} int cmp(node p, node q)
{
return p.pos < q.pos;
} int main()
{
scanf("%d", &n);
for(int i=; i<=n; i++)
scanf("%d", &a[i]);
for(int i=; i<=n; i++)
scanf("%d", &b[i]); p = ; dfs(, n, , , n); sort(c, c+p, cmp);///按编号进行排序; int flag = ; for(int i=; i<p; i++)
{
if(flag == )
{
printf("%d", c[i].num);
flag = ;
}
else
printf(" %d", c[i].num);
}
printf("\n"); return ;
}

天梯赛练习题L2-006. 树的遍历的更多相关文章

  1. 团体程序设计天梯赛-练习集L2-006. 树的遍历

    L2-006. 树的遍历 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历 ...

  2. PAT天梯赛练习题——L3-007. 天梯地图(多边权SPFA)

    L3-007. 天梯地图 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校 ...

  3. PAT天梯赛练习题 L3-002. 堆栈(线段树查询第K大值或主席树)

    L3-002. 堆栈 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有 ...

  4. 2019天梯赛练习题(L2专项练习)

    7-2 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序 ...

  5. PAT天梯赛练习题 L3-010. 是否完全二叉搜索树(完全二叉树的判断)

    L3-010. 是否完全二叉搜索树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的二叉搜 ...

  6. 2020天梯赛总决赛L2-3 完全二叉树的层序遍历 (25分)

    题目:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树.对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全 ...

  7. 2019天梯赛练习题(L1专项练习)

    7-1 水仙花数 (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身.例如:1. 本题要求编写程序,计算所有N位水仙花数. 输入样例: 3 输出样例: 153 ...

  8. GPTL—练习集—006树的遍历

    #include<bits/stdc++.h> using namespace std; typedef int daTp;//datatype typedef struct BTNode ...

  9. PAT天梯赛练习题 L3-011. 直捣黄龙(多关键字SPFA+DFS)

    L3-011. 直捣黄龙 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题是一部战争大片 —— 你需要从己方大本营出发,一路 ...

随机推荐

  1. 可持久化并(xian)查(duan)集(shu)

    随便地点开了这道可持久化并查集,发现了真相...这和并查集有 PI 关系哦.除了find_father(而且还不能路径压缩),全都是线段树0.0 题目链接: luogu.org 题目没什么描述,就是三 ...

  2. Angular笔记-select

    --select-- 设置默认选中值方法: <select ng-model="url" ng-options="x.url as x.site for x in ...

  3. 最简单有效的关于linux下配置Git操作免登录ssh公钥

    ssh-keygen -t rsa -b 4096 -C “someone@xxx.com” 然后回车三连击… 进入目录(执行cd ~/.ssh),可以看到当前目录下多出两个文件 id_rsa.pub ...

  4. PHP迭代器:Iterator和IteratorAggregate

    使用迭代模式遍历所有的对象的时候,都必须实现Traversable(遍历)接口.但是Traversable是一个内部的类,只有用c语言编写的类才可以实现Traversable实现.如果我们在自定义的 ...

  5. 网络流24题 ——运输问题 luogu 4015

    题目描述:这里 题面已经提示我们这是费用流了 那么由源点向所有仓库连边,容量为仓库原有货物量,费用为0 然后由所有零售商店向汇点连边,容量为一个零售商店的需求量,费用为0 最后由仓库向零售商店连边,容 ...

  6. vue在jsx中使用for循环

    return <div domPropsInnerHTML="titles" style={{ color: 'red', fontSize: '14px' }}> { ...

  7. SQL反模式学习笔记11 限定列的有效值

    目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...

  8. Ubuntu16.04 14.04安装配置Caffe(GPU版)

    caffe配置过程很长啊,坑非常多,没有linux基础的估计会香菇的.我参考了网上很多的帖子,基本上每个帖子都有或多或少的问题,研究很久最终配置成功.参考过的帖子太多,都记不太清来源了.为了对前人的感 ...

  9. 安装Hive过程中报错:Unsupported major.minor version 52.0

    在安装hive的过程中,我觉得我是按照教程走的,但是在启动hive时还是报错了,错误如下 Exception in thread "main" java.lang.Unsuppor ...

  10. pandas 必背函数操作

    1.五个常用属性 index,columns,shape,values,dtypes2.常用函数:set_index,reset_index,del df['column_name'],pd.read ...