5-6 树的遍历

分数 20

全屏浏览题目

切换布局

作者 陈越

单位 浙江大学

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

输入格式:

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

输出格式:

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

输入样例:

7
2 3 1 5 7 6 4
1 2 3 4 5 6 7

输出样例:

4 1 6 3 5 7 2

起先毫无头绪,这篇帖子(2条消息) 【数据结构习题】PTA 7-2 树的遍历 后序遍历+中序遍历_真的吃很多的博客-CSDN博客_给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都博主说的很清楚,我主要是全部用的C语言写的,然后多写了一点注释

#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{ElementType Data;BinTree Left;BinTree Right;
};
typedef struct TNode *Position;
typedef Position BinTree;
int Post[35];
int In[35];//定义全局变量
void LevelorderTraversal( BinTree BT );
BinTree CreatBinTree(int front1,int rear1,int front2,int rear2);
void visit(int Data);int main()
{int N;if(scanf("%d",&N) )//pta时常因为scanf返回值的原因报错,所以这里采用这种方式规避错误{}//给出后序的序列for(int i=0;i<N;i++){if(scanf("%d",&Post[i])){}} //给出中序的序列  for(int i=0;i<N;i++){if(scanf("%d",&In[i])){}} //给出根节点 BinTree root=CreatBinTree(0,N-1,0,N-1);LevelorderTraversal( root );
}
BinTree CreatBinTree(/*后序*/int front1,int rear1,/*中序*/int front2,int rear2)
{BinTree root=(BinTree )malloc(sizeof(struct TNode));//创建根节点 root->Data=Post[rear1];//根节点使后序遍历中的最后一个元素root->Left=root->Right=NULL;//先给根节点的左右子树赋空值 int p=front2;while(In[p]!=Post[rear1])//从中序序列中开始查找元素,直到找到根结点,p就是中序序列中根节点的下标 p++;int num=p-front2;//根节点下标-起始点下标=左子树结点个数if(num!=0)//只要再中序序列中找到的根节点下标不等于中序序列的最左下标,那么存在左子树 root->Left=CreatBinTree(front1,front1+num-1,front2,p-1);//创建左子树  if(p!=rear2)//只要在中序序列中找到的根节点下标不等于中序序列的最右下标,那么存在右子树 root->Right=CreatBinTree(front1+num,rear1-1,p+1,rear2);return root;
}
void LevelorderTraversal( BinTree BT )//层次遍历
{//创建队列Position que[100];//指针数组 类似于int *p【3】 每一个p[i]都是指针,指向int型数据//同理 que【i】都是指针,指向的是struct TNode型数据int front=0,rear=0;if(BT)//只要树不为空{que[rear]=BT;//入队rear=(rear+1)%100;while(front!=rear)//队列非空的条件{Position p=que[front];visit(p->Data);front=(front+1)%100;//结点出队并访问if(p->Left) {que[rear]=p->Left;rear=(rear+1)%100;}if(p->Right) {que[rear]=p->Right;rear=(rear+1)%100;}if(front!=rear){printf(" ");}}  }
}
void visit(int Data)
{printf("%d",Data);
}

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

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

    题干: 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 解题报告: dfs求出这棵树来,然后bfs求层序遍历就行了. AC代码: #include&l ...

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

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

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

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

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

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

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

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

  6. 二叉树:通过前序遍历与中序遍历序列输出二叉树的后序遍历序列

    题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树: 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树: 后序遍历: ...

  7. 【数据结构笔记10】二叉树的先序、中序、后序遍历,中序遍历的堆栈/非递归遍历算法,层序遍历,确定一个二叉树,树的同构

    本次笔记内容: 3.3.1 先序中序后序遍历 3.3.2 中序非递归遍历 3.3.3 层序遍历 3.3.4 遍历应用例子 小白专场:题意理解及二叉树表示 小白专场:程序框架.建树及同构判别 文章目录 ...

  8. 二叉树的前序遍历,中序遍历,后序遍历-详解-配套例题

    二叉树作为数据结构中一种简单而且重要的数据结构,他的存储结构和算法都相对比较简单,因此他也显得特别重要,因为很多问题都可以抽象为二叉树的问题. 在这里我们对于二叉树的基本概念不做详细介绍,我们这里主要 ...

  9. 【二叉树】由后序遍历和中序遍历推出前序遍历

    题目描述:根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果. 输入格式: 第一行给出正整数N(≤30),是树中结点的个数.随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果 ...

最新文章

  1. 怎么连接屏幕_手机屏幕坏了也可以操作?这办法学会了再不怕碎屏
  2. STM8单片机定时器驱动的深度解析
  3. Java配置环境变量及其意义
  4. Delphi 与 DirectX 之 DelphiX(77): TDIB.Distort();
  5. net start zabbix agent 服务没有相应控制功能_一步到位,服务器监控就是这么简单...
  6. 关于Spring AOP,除了动态代理、CGLIB,你还知道什么?
  7. JavaSE基础知识学习-----泛型
  8. ansys的kbc_ANSYS载荷施加
  9. Linux 根文件系统目录结构与功能,4.Linux根文件系统和目录结构及bash特性
  10. Win8 开发者训练营第一天的过程,感受和收获
  11. Python中定时任务框架APScheduler的快速入门指南
  12. TeamViewer远程控制软件的许可证有什么用处
  13. Unity背包系统 设计流程
  14. nuc8i5beh安装黑苹果的安装教程,接近完美运行
  15. java excel 插入新行_使用POI往EXCEL中插入行
  16. 借助ChatGPT自动生成PPT
  17. JDK8升至JDK11 新特性整理
  18. 使用MATLAB绘制Gazebo中的仿真小车的运动轨迹
  19. QGC地面站小白安装与简单实用
  20. 副主任护师计算机考试试题,备考2021年副主任护师 主任护师职称考试教材+习题集+试卷(协和版)...

热门文章

  1. png,img等图片格式转化为svg格式
  2. 系分 - 数据库系统
  3. win10linux子系统2018,Windows 10 October 2018 更新版本十大最强功能
  4. 5G将如何颠覆行业?
  5. 【分享】电子价格标签系统方案
  6. 广东省城市环境空气质量状况数据集(2014年1月-2022年5月)
  7. 广告费的分摊计提 预提?NO
  8. ansible程序自动化
  9. phonegap实现照片上传
  10. Live800在线客服系统:客户体验即是业绩来源