数据结构实验之二叉树五:层序遍历
题目描述
已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。
输入
输出
示例输入
2 abd,,eg,,,cf,,, xnl,,i,,u,,
示例输出
abcdefg xnuli
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef char telemtype; typedef char status; typedef struct BiTNode {telemtype data;struct BiTNode *lchild, *rchild; }*BiTree; typedef BiTree QElemType;//注意此类型应定义为BiTreetypedef char Status;typedef struct QNode;{QElemType data;QNode *next;} QNode, *Queueptr; typedef struct//定义队列{Queueptr front;Queueptr rear;} LinkQueue; char str[55]; int i; status create(BiTree &T)//生成树; {if(str[i++]==',') T=NULL;else{T = (BiTNode *) malloc (sizeof(BiTNode));if(!T) exit(0);T->data = str[i-1];create(T->lchild);create(T->rchild);}return 1; } Status InitQueue (LinkQueue &Q)//队的初始化;‘{Q.front = Q.rear = (Queueptr)malloc(sizeof(QNode));if (!Q.front) exit (0);Q.front->next = NULL;return 1;}Status EnQueue (LinkQueue &Q, QElemType e)//进队;{Queueptr p;p = (Queueptr) malloc (sizeof (QNode));if (!p) exit (0);p->data = e;p->next = NULL;Q.rear->next = p;Q.rear = p;return 1;}Status DeQueue (LinkQueue &Q, QElemType &e)//出队;{Queueptr p;if (Q.front == Q.rear)return 0;p = Q.front->next;e = p->data;Q.front->next = p->next;if (Q.rear == p)Q.rear = Q.front;free (p);return 1;}Status QueueEmpty(LinkQueue Q)//判断是否为空队;{if(Q.front==Q.rear)return 1;elsereturn 0;}void Traverse(BiTree T)//二叉树的层次遍历序列; {LinkQueue Q;//BiTree p;//p=T;InitQueue(Q);if(T)EnQueue(Q, T);while(!QueueEmpty(Q)){DeQueue(Q,T);printf("%c", T->data);if(T->lchild)EnQueue(Q, T->lchild);if(T->rchild)EnQueue(Q, T->rchild);}} int main() {BiTree T;int t;scanf("%d",&t);for(int j=0;j<t;j++){scanf("%s",str);i=0;create(T);//树的建立;Traverse(T);//二叉树的层次遍历序列;printf("\n");} }
#include<iostream> #include<cstring> #include<queue> #include<cstdio> #include<algorithm> using namespace std; typedef struct Bnode { char data; Bnode *rchild,*lchild; }*BiTree,Bnode; char str[55]; int i; void create(BiTree &T) { if(str[i++]==',') T=NULL; else { T=new Bnode; if(!T) exit(0); T->data=str[i-1]; create(T->lchild); create(T->rchild); } } void cengci(BiTree &T) { int out=0,in=0; BiTree q[100];//存树的队列; if(T) q[in++]=T; while(in>out) { if(q[out]) { printf("%c",q[out]->data); q[in++]=q[out]->lchild; q[in++]=q[out]->rchild; } out++; } } void Traverse(BiTree T) { queue<BiTree> q; BiTree p=NULL; if(T) { q.push(T); } while(!q.empty()) { p=q.front(); q.pop(); cout<<p->data; if(p->lchild) q.push(p->lchild); if(p->rchild) q.push(p->rchild); } } int main() { BiTree T; int t; while(cin>>t) { for(int j=0;j<t;j++) { scanf("%s",str); T=NULL; i=0; create(T); //cengci(T); Traverse(T); cout<<endl; } } return 0; }
数据结构实验之二叉树五:层序遍历相关推荐
- 数据结构实验之二叉树五:层序遍历 // oj3344 队列+二叉树 // 先序 --层次
原题链接:oj3344 数据结构实验之二叉树五:层序遍历 Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. In ...
- 3344 数据结构实验之二叉树五:层序遍历
数据结构实验之二叉树五:层序遍历 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 已知一个按先序输入的字符序列,如abd,,e ...
- sdut 3341数据结构实验之二叉树二:遍历二叉树
数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000MS Memory Limit: 65536K Problem Description 已知二叉树的一个按先序遍历输入的字符序列,如 ...
- 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)
Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. Input 输入数据有多行,第一行是一个整数t (t<1 ...
- 数据结构实验之二叉树二:遍历二叉树
Description 已知二叉树的一个按先序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点).请建立二叉树并按中序和后序的方式遍历该二叉树. Input 连续输入多组数据,每组数据 ...
- 代码随想录算法训练营第十五天 | 102. 二叉树的层序遍历 | 226.翻转二叉树 | 101. 对称二叉树
递归三部曲 确定递归函数的参数和返回值 确定终止条件 确定单层递归的逻辑 102. 二叉树的层序遍历 题解及想法 解法一 :递归法 class Solution {public List<Lis ...
- 遍历children_二叉树:层序遍历登场!
登场之后,我要打十个! 看完这篇文章虽然不能打十个,但是可以迅速打五个!而且够快! 102.二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值.(即逐层地,从左到右访问所有节点). ...
- c语言数据结构二叉树实验报告,数据结构实验三二叉树实验报告.doc
数据结构实验三二叉树实验报告 数据结构实验报告 实验名称: 实验三--二叉树 学生姓名: XX 班 级: 班内序号: 学 号: 日 期: 1.实验要求 1.1实验目的 通过选择下面两个题目之一进行实现 ...
- 一次字节面试,被二叉树的层序遍历捏爆了
前言 大家好,我是bigsai,在数据结构与算法中,二叉树无论是考研.笔试都是非常高频的考点内容,在二叉树中,二叉树的遍历又是非常重要的知识点,今天给大家讲讲二叉树的层序遍历. 这部分很多人可能会但是 ...
最新文章
- 如何完成一次快速的查询?
- 【剑指offer-Java版】40数组中只出现一次的数字
- java理念_java温故而知新(9)OOP(面向对象编程)理念
- 快速理解网络通信协议
- Qt 编译错误 LINK2001:无法解析的外部符号 public: virtual struct QMetaObject const thiscall Widget::metaObject
- [Java]向上/下转型Casting
- 修改字段类型_PostgreSQL 关于字段类型的修改 谣言与止谣
- Java LinkedList公共布尔提供(对象o)方法(带示例)
- replicated vs global mode - 每天5分钟玩转 Docker 容器(105)
- 利用开放定址法实现散列表的创建、插入、删除、查找操作_散列表和IO
- idea在java文件中查找_Java开发工具IntelliJ IDEA使用源代码系列教程(四):在文件中搜索目标...
- Jenkins学习总结(2)——Jenkins+Maven进行Java项目持续集成
- php获取肖前时间,实践唯物主义哲学”简介创始人:肖前、高清海等(​贰·综合哲学类4)...
- 10分钟 实现图片懒惰加载
- python打开word并定位_python自动化办公之 python操作Word
- c语言智能手环程序,iCareTech C+医学智能手环设计流程
- 【Python成长之路】快速理解复制、浅拷贝、深拷贝
- [云计算学习3] Linux基础 : 使用chrony搭建时间服务器并让下游NTP同步时间
- /usr/bin/ld: cannot find -lxxx 问题 解决方法总结
- 用dos2unix批量转换文件
热门文章
- 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路
- 农历php,PHP农历公历转换
- python代码自动生成器下载_Python代码生成器
- 宋浩 概率统计 笔记_推论统计分析学习笔记
- jdk1.8 mysql_Centos 7配置JDK1.8+MySQL5.7+Tomcat 8 开发环境
- 【LeetCode笔记 - 每日一题】519. 随机翻转矩阵(Java、随机、双指针)
- java子类怎么编译_java – 无法编译从基类实现抽象方法的子类
- sql 百分号_SQL思维导图和代码分享
- arm b bl 地址无关码_ARM汇编语言入门(六)
- java 数据字典 spring_springboot+redis+切面实现数据字典功能