博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SDUT-3344_数据结构实验之二叉树五:层序遍历
阅读量:6093 次
发布时间:2019-06-20

本文共 1351 字,大约阅读时间需要 4 分钟。

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

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

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

Input

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

Output

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

Sample Input

2

abd,,eg,,,cf,,,
xnl,,i,,u,,

Sample Output

abcdefg

xnuli

PS:如果对二叉树的遍历没有了解的话请先看我的另一篇博客

#include 
#include
#include
typedef struct tree{ char data; struct tree *l,*r;}tree;int i;char s[55];tree *newtree(){ tree *t; t = (tree*)malloc(sizeof(tree)); t->l = t->r = NULL; return t;}tree *creat() //根据所给的遍历顺序建树{ tree *t = newtree(); if(s[i++]==',') return NULL; t->data = s[i-1]; t->l = creat(); t->r = creat(); return t;}void show(tree *t) //层序遍历{ tree *q[55],*t1; //用q[]来模拟队列 int front,base; //队列的首和尾 front = base = 0; if(t) { q[base++] = t; } while(front!=base) //当队首与队尾相等时队伍为空 { t1 = q[front++]; printf("%c",t1->data); if(t1->l) q[base++] = t1->l; if(t1->r) q[base++] = t1->r; }}int main(){ tree *t; int k; scanf("%d",&k); while(k--) { scanf("%s",s); i = 0; t = newtree(); t = creat(); show(t); printf("\n"); } return 0;}

转载于:https://www.cnblogs.com/luoxiaoyi/p/9848123.html

你可能感兴趣的文章
小程序: 查看正在写的页面
查看>>
C++ 经典开源
查看>>
LayoutParams
查看>>
Chisel_LLDB调试命令
查看>>
DNS Doctoring
查看>>
(转载一篇)Windows7与ArcGIS Desktop9.3冲突问题解决(由QQ安装问题引出)(经本人验证已解决)...
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
[转]无法安装MVC3,一直卡在vs10-kb2483190
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
web框架-(二)Django基础
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
Excel到R中的日期转换
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>