当前位置: 首页 > news >正文

PTA 7-4 按层遍历二叉树

用先序和中序序列构造一棵二叉树(树中结点个数不超过10个),通过用队记录结点访问次序的方法实现对二叉树进行按层遍历,即按层数由小到大、同层由左到右输出按层遍历序列。

输入格式:

第一行输入元素个数

第二行输入先序序列,以空格隔开

第三行输入中序序列,以空格隔开

输出格式:

输出此二叉树的按层遍历序列,以空格隔开,最后也有一个空格。

输入样例:

5
10 20 40 30 50
20 40 10 50 30

输出样例:

10 20 30 40 50 

代码实现:

#include<stdio.h>  
#include <stdlib.h>  
#include<bits/stdc++.h>
#include<queue>
using namespace std;
typedef struct node{  int data;  struct node *lson,*rson;  
} Bnode, *Bptr;  Bptr creat(int a[], int b[], int i, int j,int s,int t){  int k;Bptr p;if(i>j)return NULL;p=new Bnode;p->data=a[i];k=s;while((k<=t)&&(b[k]!=a[i])){k++;}if(b[k]!=a[i]){return NULL;}p->lson=creat(a,b,i+1,i+k-s,s,k-1);p->rson=creat(a,b,i+k-s+1,j,k+1,t);return p;
}  void anceng(Bptr p){  queue<Bptr> q;  if (p != NULL) q.push(p);  while(!q.empty()){  Bptr temp = q.front(); q.pop();printf("%d ", temp->data); if(temp->lson!=NULL){  q.push(temp->lson);  }  if(temp->rson!=NULL){  q.push(temp->rson);}  }  
}  void freeTree(Bptr p){if(p != NULL){  freeTree(p->lson);  freeTree(p->rson);  free(p);  }  
}  int main(){  Bptr q;  int xianxu[10], zhongxu[10], x;  scanf("%d", &x);  for(int i = 0; i < x; i++){  scanf("%d", &xianxu[i]);  }  for(int i = 0; i < x; i++){  scanf("%d", &zhongxu[i]);  }  q = creat(xianxu,zhongxu,0,x-1,0,x-1); anceng(q);  freeTree(q); return 0;
}

相关文章:

  • ES 8的向量检索性能调优实践
  • MPEG-TS 封装格式详解
  • 设备上CCD功能增加(从接线到程序)
  • 如何修复Mfplat.dll无法找到或者缺失的错误
  • Vue3-Pinia状态管理器
  • 【考研数据结构知识点详解及整理——C语言描述】第二章 线性表顺序存储结构上的基本操作——顺序表的插入操作
  • 【ZZULI数据结构实验四】:C语言排序算法大比拼
  • 计算机网络期末知识总结(第一章)
  • Kylin入门教程介绍
  • 雪花算法详解及源码分析
  • 爬虫面试手册
  • HTML基本元素包含HTML表单验证
  • 自友科技破解走班教育排课难题
  • 尚品汇项目
  • c++与c
  • (三)从jvm层面了解线程的启动和停止
  • cookie和session
  • Fastjson的基本使用方法大全
  • github从入门到放弃(1)
  • HTTP--网络协议分层,http历史(二)
  • leetcode46 Permutation 排列组合
  • linux学习笔记
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 代理模式
  • 经典排序算法及其 Java 实现
  • 开源地图数据可视化库——mapnik
  • 数据结构java版之冒泡排序及优化
  • 一、python与pycharm的安装
  • - 转 Ext2.0 form使用实例
  • hi-nginx-1.3.4编译安装
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​flutter 代码混淆
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • # include “ “ 和 # include < >两者的区别
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 安徽锐锋科技IDMS系统简介
  • (11)MATLAB PCA+SVM 人脸识别
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)Java算法:二分查找
  • (转)winform之ListView
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Core中Emit的使用
  • .NET 事件模型教程(二)
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。