思路:

先建树,然后按层次输出。

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<sstream>
#include<list>
#include<cmath>
#include<queue>
using namespace std;
struct node{
int index;
node *left,*right;
node()
{
index=;
left=right=NULL;
}
};
int pre[],mid[];
int n2,n;
int judge[];
node* build(node *root)//建树
{
int t=pre[n2++];
int i; for( i=;i<n;i++)
{
if(mid[i]==t)
break;
}
root=new node();
root->index=t;
judge[i]=;
if(i>&&i<n&&judge[i-]==)
root->left=build(root->left);
if(i>=&&i<n-&&judge[i+]==)
root->right=build(root->right);
return root;
} void print(node* root)
{
printf("%d ",root->index); if(root->left)
print(root->left);
if(root->right)
print(root->right);
return ;
}
int cntp=;
void bfs(node* root)//题目要求层次遍历输出
{
queue <node*> q;
q.push(root);
while(!q.empty())
{
node* a=q.front();
q.pop();
if(cntp!=)
printf(" ");
printf("%d",a->index);
cntp++; // system("pause");
if(a->right)
q.push(a->right);
if(a->left)
q.push(a->left); }
return ;
}
int main()
{ while(scanf("%d",&n)==)
{
for(int i=;i<n;i++)
scanf("%d",&mid[i]);
for(int i=;i<n;i++)
scanf("%d",&pre[i]);
memset(judge,,sizeof(judge));
n2=;
cntp=;
node* root=build(root);
//print(root);
bfs(root);
printf("\n");
}
return ;
}

PTA

PTA L2-011 玩转二叉树 二叉树+bfs的更多相关文章

  1. PAT L2-011 玩转二叉树(二叉树层序遍历)

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

  2. C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解

    剑指offer  面试题23:从上往下打印二叉树 参与人数:4853  时间限制:1秒  空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...

  3. pta l2-11(玩转二叉树)

    题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805065406070784 题意:给定二叉树的结点个数n,其前 ...

  4. PTA 天梯赛练习 7-11 玩转二叉树-二叉树重建

    以前就思考过这个问题,但是没有深入的想过,这是一种叫二叉树重建的典型题目 如果给出中序和前序,求出后序遍历. 这道题则求的是交换儿子节点的层序遍历. 二叉树的重建应该怎么重建,首先我们知道,先根遍历, ...

  5. PTA 7-10 树的遍历(二叉树基础、层序遍历、STL初体验之queue)

    7-10 树的遍历(25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数 ...

  6. DS二叉树--二叉树之父子结点

    题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构. 编写程序输出该树的所有叶子结点和它们的父亲结点 输入 第一 ...

  7. DS二叉树--二叉树构建与遍历

    题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历.中序遍历和后序遍历结果 输入 第一 ...

  8. DS二叉树--二叉树之数组存储

    二叉树可以采用数组的方法进行存储,把数组中的数据依次自上而下,自左至右存储到二叉树结点中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点就在数组中用0来表示.,如下图所示 从上图可以看出,右边的是 ...

  9. javascript实现数据结构: 树和二叉树,二叉树的遍历和基本操作

    树型结构是一类非常重要的非线性结构.直观地,树型结构是以分支关系定义的层次结构. 树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构:在数据库系统中,可用树来组织信息:在分 ...

随机推荐

  1. file 自定义上传附件并展示缩略图

    效果图镇楼..   写的有点乱.上传一个实例供大家参考--附件下载地址如何下: https://files.cnblogs.com/files/fchx91/uploadFiles.rar 2019- ...

  2. 五十九、linux 编程—— I/O 多路复用 fcntl

    59.1 介绍 前面介绍的函数如,recv.send.read 和 write 等函数都是阻塞性函数,若资源没有准备好,则调用该函数的进程将进入阻塞状态.我们可以使用 I/O 多路复用来解决此问题(即 ...

  3. Hibernate 分页

    public EmailBean[] findByPage(Date begin, Date end, String emailreference, int pageNo, final int pag ...

  4. luogu P5323 [BJOI2019]光线

    传送门 先考虑\(n=1\)的情况不是输入数据都告诉你了吗 然后考虑\(n=2\),可以光线是在弹来弹去的废话,然后射出去的光线是个等比数列求和的形式,也就是\(x_1\sum_{i=1}^{\inf ...

  5. Python的re模块中search与match的区别

    1.search和match: search:在整个字符中匹配,如果找不到匹配的就返回None match:在字符串开始位置匹配如果不匹配就返回None 2.效率对比: search: match:

  6. sonar服务搭建

    1.下载安装包,我安装的是6.7.6版本 https://www.sonarqube.org/downloads/ 2.安装前的环境要求 JDK1.8+   数据库,我用的是Mysql5.6版本 3. ...

  7. IAR中如何定向把数组和函数放在指定的地址单元

    1. 指定数组到特定的Flash单元#pragma location = 0x000FFF00 __root const char Flash_config[] = {0x0,0x1,0x2,0x3, ...

  8. day16——函数式编程和内置函数

    编程的方法论 面向过程:找到问题的 函数式:不可变.不用变量保存状态.不修改变量 面向对象: 高阶函数: 满足俩个特性任意一个即为高阶函数 1.函数的传入参数是一个函数名 2.函数的返回值是一个函数名 ...

  9. 洛谷P5284 [十二省联考2019]字符串问题 [后缀树]

    传送门 思路 设\(dp_i\)表示以\(i\)结尾的\(A\)串,能达到的最长长度. 然后发现这显然可以\(i\)往自己控制的\(k\)连边,\(k\)往能匹配的\(j\)连边,就是个最长路,只要建 ...

  10. MQTT报文格式

    MQTT报文结构 控制报文由三部分组成: 1.Fixed header 固定报头,所有报文都包含 2.Variable header 可变报头,部分报文包含 3.Body 有效载荷,部分报文包含 固定 ...