题干:

给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。

解题报告:

dfs求出这棵树来,然后bfs求层序遍历就行了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX = 2e5 + 5;
struct Node {int val,l,r;
} node[MAX];
int tot;
int c[MAX],b[MAX];
int dfs(int len,int b[],int c[]) {//中序,后序 if(len <= 0) return -1;if(len == 1) {node[++tot].val = b[1];node[tot].l=node[tot].r = -1;return tot;}node[++tot].val = c[len];int res = tot;int l;for(l = 1; l<=len; l++) {if(b[l] == c[len]) break;}node[res].l = dfs(l-1,b,c);//node[res].r = dfs(len-l,b+l-1,c+l);node[res].r = dfs(len-l,b+l,c+l-1);return res;
}
void bfs() {queue<int> q;q.push(1);while(q.size()) {int cur = q.front();q.pop();if(cur != 1) printf(" ");printf("%d",node[cur].val);if(node[cur].l != -1) q.push(node[cur].l);if(node[cur].r != -1) q.push(node[cur].r);}
}
int main()
{int n;cin>>n;for(int i = 1; i<=n; i++) scanf("%d",c+i);for(int i = 1; i<=n; i++) scanf("%d",b+i);dfs(n,b,c);//printf("%d",node[1].val);bfs();return 0 ;
}

【7-10 PAT】树的遍历(给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。)相关推荐

  1. pta习题:给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。

    5-6 树的遍历 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一 ...

  2. 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。

    给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. #include <cstdio> #include <cstring> #i ...

  3. 手动创建一棵二叉树,然后利用前序、中序、后序、层序进行遍历(从创建二叉树到各种方式遍历)(含运行结果)

    手动创建一棵二叉树,然后利用前序.中序.后序.层序进行遍历 import java.util.LinkedList; import java.util.List; import java.util.Q ...

  4. 线索树找*p的中序后继且中序遍历 二叉线索树

    //线索树找*p的中序后继且中序遍历 二叉线索树 #define thread 1 #define link 0 typedef struct Bt{char data;struct Bt *lc;/ ...

  5. java 二叉树的实现以及前序、中序、后续遍历实现

    目录 前言 完全二叉树 完全二叉树实现代码 测试 输出 前言 二叉树是n个有限元素的集合,该集合或者为空.或者由一个称为根(root)的元素及两个不相交的.被分别称为左子树和右子树的二叉树组成,是有序 ...

  6. 给定一棵二叉树,计算该二叉树的深度、总节点个数和叶子节点个数。

    // // binary_tree.cpp // BinaryTreeApp // // Created by ljpc on 2018/5/3. // Copyright © 2018年 ljpc. ...

  7. 6.36③ 若已知两棵二叉树B1和B2皆为空,或者皆 不空且B1的左、右子树和B2的左、右子树分别相似, 则称二叉树B1和B2相似。试编写算法,判别给定两 棵二叉树是否相似。

    6.36③  若已知两棵二叉树B1和B2皆为空,或者皆 不空且B1的左.右子树和B2的左.右子树分别相似, 则称二叉树B1和B2相似.试编写算法,判别给定两 棵二叉树是否相似. 要求实现下列函数: S ...

  8. java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...

    前言 二叉树各种花里胡哨的算法题真的把我搞晕了,今天特地整理出一类有关二叉树的算法题,希望能帮助阅读到此文章的人,今后不再受此类题型的困扰. 一.题目类型 已知二叉树的两种遍历序列,请根据该序列构建二 ...

  9. mysql 实现非递归树_二叉树的非递归前序,中序,后序遍历算法

    #include #include struct tree { char data; struct tree *lchild; struct tree *rchild; }; typedef stru ...

最新文章

  1. oracle 日期类型显示毫秒
  2. 匿名管道实现获取控制台程序输出
  3. 关于void main()的误区
  4. ASP.NET Core 网站在Docker中运行
  5. 奇虎回应委员退出360督导委员会 称流氓软件产业链已基本消灭
  6. Python之进程+线程+协程(并发与并行、GIL锁、同步锁、死锁、递归锁)
  7. Opera中的opera密码修改,半残了
  8. 14 、软件测试-MySQL的基本使用方法-增删改查
  9. 巴比特 | 元宇宙每日必读:红杉中国“雇”了一位虚拟员工,自称每秒可看百份商业计划书,期待时薪为0.68元...
  10. 自动驾驶 Apollo 源码分析系列,感知篇(一)
  11. 用料扎实的全模组电源,还有十年换新支持,安钛克HCG 850体验
  12. (numpy)python中Array的常用函数
  13. 鼠标悬停帮助图标显示文字提示框代码
  14. 【RF】【元素定位】 Other element would receive the click
  15. java中,什么是GC?GC的基本原理。
  16. 2,4-二硝基苯磺酰基(DNBS)修饰BODIPY染料识别GSH/溶酶体
  17. FPGA之DDR4驱动
  18. 美团点评面试题目(2019)
  19. 计算机专业 本科论文,计算机专业本科论文范文
  20. Vue实现订单确认界面禁止浏览器返回操作导致重复提交订单的问题

热门文章

  1. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第34篇]描述攻击离散对数问题的baby-step/Giant-step方法
  2. 休眠后gpio状态_1.Linux电源管理-休眠与唤醒
  3. javascript用户登录_SAP HANA XS的JavaScript安全事项
  4. 计算机用户名登陆管理员权限,关于win10勿删用户账号下管理员身份导致无法登录系统的问题...
  5. atom配置python环境_python与excel有段情之二:python的安装和环境配置
  6. a5d2 mac 驱动分析
  7. linux 下查看程序依赖的库
  8. 在内存中建立文件_磁盘与文件,搞懂它
  9. 如何干净的删除vm_如何在macOS 10.15 Catalina绕过XProtect?
  10. Mybatis笔记——Mybatis入门