题目描述

已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。

输入

 输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据。每行是一个长度小于50个字符的字符串。

输出

 输出二叉树的层次遍历序列。

示例输入

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;
}

数据结构实验之二叉树五:层序遍历相关推荐

  1. 数据结构实验之二叉树五:层序遍历 // oj3344 队列+二叉树 // 先序 --层次

    原题链接:oj3344 数据结构实验之二叉树五:层序遍历 Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. In ...

  2. 3344 数据结构实验之二叉树五:层序遍历

    数据结构实验之二叉树五:层序遍历 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 已知一个按先序输入的字符序列,如abd,,e ...

  3. sdut 3341数据结构实验之二叉树二:遍历二叉树

    数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000MS Memory Limit: 65536K Problem Description 已知二叉树的一个按先序遍历输入的字符序列,如 ...

  4. 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)

    Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. Input 输入数据有多行,第一行是一个整数t (t<1 ...

  5. 数据结构实验之二叉树二:遍历二叉树

    Description 已知二叉树的一个按先序遍历输入的字符序列,如abc,de,g,f, (其中,表示空结点).请建立二叉树并按中序和后序的方式遍历该二叉树. Input 连续输入多组数据,每组数据 ...

  6. 代码随想录算法训练营第十五天 | 102. 二叉树的层序遍历 | 226.翻转二叉树 | 101. 对称二叉树

    递归三部曲 确定递归函数的参数和返回值 确定终止条件 确定单层递归的逻辑 102. 二叉树的层序遍历 题解及想法 解法一 :递归法 class Solution {public List<Lis ...

  7. 遍历children_二叉树:层序遍历登场!

    登场之后,我要打十个! 看完这篇文章虽然不能打十个,但是可以迅速打五个!而且够快! 102.二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值.(即逐层地,从左到右访问所有节点). ...

  8. c语言数据结构二叉树实验报告,数据结构实验三二叉树实验报告.doc

    数据结构实验三二叉树实验报告 数据结构实验报告 实验名称: 实验三--二叉树 学生姓名: XX 班 级: 班内序号: 学 号: 日 期: 1.实验要求 1.1实验目的 通过选择下面两个题目之一进行实现 ...

  9. 一次字节面试,被二叉树的层序遍历捏爆了

    前言 大家好,我是bigsai,在数据结构与算法中,二叉树无论是考研.笔试都是非常高频的考点内容,在二叉树中,二叉树的遍历又是非常重要的知识点,今天给大家讲讲二叉树的层序遍历. 这部分很多人可能会但是 ...

最新文章

  1. 如何完成一次快速的查询?
  2. 【剑指offer-Java版】40数组中只出现一次的数字
  3. java理念_java温故而知新(9)OOP(面向对象编程)理念
  4. 快速理解网络通信协议
  5. Qt 编译错误 LINK2001:无法解析的外部符号 public: virtual struct QMetaObject const thiscall Widget::metaObject
  6. [Java]向上/下转型Casting
  7. 修改字段类型_PostgreSQL 关于字段类型的修改 谣言与止谣
  8. Java LinkedList公共布尔提供(对象o)方法(带示例)
  9. replicated vs global mode - 每天5分钟玩转 Docker 容器(105)
  10. 利用开放定址法实现散列表的创建、插入、删除、查找操作_散列表和IO
  11. idea在java文件中查找_Java开发工具IntelliJ IDEA使用源代码系列教程(四):在文件中搜索目标...
  12. Jenkins学习总结(2)——Jenkins+Maven进行Java项目持续集成
  13. php获取肖前时间,实践唯物主义哲学”简介创始人:肖前、高清海等(​贰·综合哲学类4)...
  14. 10分钟 实现图片懒惰加载
  15. python打开word并定位_python自动化办公之 python操作Word
  16. c语言智能手环程序,iCareTech C+医学智能手环设计流程
  17. 【Python成长之路】快速理解复制、浅拷贝、深拷贝
  18. [云计算学习3] Linux基础 : 使用chrony搭建时间服务器并让下游NTP同步时间
  19. /usr/bin/ld: cannot find -lxxx 问题 解决方法总结
  20. 用dos2unix批量转换文件

热门文章

  1. 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路
  2. 农历php,PHP农历公历转换
  3. python代码自动生成器下载_Python代码生成器
  4. 宋浩 概率统计 笔记_推论统计分析学习笔记
  5. jdk1.8 mysql_Centos 7配置JDK1.8+MySQL5.7+Tomcat 8 开发环境
  6. 【LeetCode笔记 - 每日一题】519. 随机翻转矩阵(Java、随机、双指针)
  7. java子类怎么编译_java – 无法编译从基类实现抽象方法的子类
  8. sql 百分号_SQL思维导图和代码分享
  9. arm b bl 地址无关码_ARM汇编语言入门(六)
  10. java 数据字典 spring_springboot+redis+切面实现数据字典功能