二叉树的层次遍历---队列的使用
来源:互联网 发布:行知实践园课程 编辑:程序博客网 时间:2024/05/21 14:02
数据结构实验之二叉树五:层序遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。
输入
输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据。每行是一个长度小于50个字符的字符串。
输出
输出二叉树的层次遍历序列。
示例输入
2
abd,,eg,,,cf,,,
xnl,,i,,u,,
示例输出
abcdefg
xnuli
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知一个按先序输入的字符序列,如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 struct node{ char data; struct node *l,*r;} Node;char s[55];int k,j;Node* queue[100];int front,rear;Node *create_tree();void level_visit(Node*p);int main(){ int t; scanf("%d",&t); while(t--) { Node *root; scanf("%s",s); k = strlen(s); j = 0; root = create_tree(); level_visit(root); printf("\n"); } return 0;}Node*create_tree(){ Node*p; if(s[j] == ',' || j >= k) { j++; p = NULL; return p; } else { p = (Node*)malloc(sizeof(Node)); p->data = s[j++]; p->l = create_tree(); p->r = create_tree(); } return p;}void level_visit(Node*p){if(p)//树不空{ front = rear = 0; Node*q; queue[rear++] = p; while(front < rear)//队列不空 { q = queue[front++];//取队首元素,输出, printf("%c",q->data); if(q->l!=NULL)//判断该元素有左孩子,进队列 { queue[rear++] = q->l; } if(q->r!=NULL)//判断该元素有右孩子,进队列 { queue[rear++] = q->r; } }}}
0 0
- 二叉树的层次遍历---队列的使用
- 二叉树的层次遍历 队列
- 利用队列进行二叉树的层次遍历
- 二叉树的层次非递归遍历运用队列
- 层次遍历二叉树的方法(递归,队列,指针)
- 利用队列实现二叉树的层次遍历
- [二叉树专题]:广度优先:按层次遍历二叉树的非递归实现||使用队列实现层次遍历二叉树
- 二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的层次遍历
- 二叉树的层次遍历!!!
- 二叉树的层次遍历
- NDK编程初试
- 作为一名基层管理者如何利用情商管理自己和团队(二)
- Volley框架总结
- HDU3652(数位DP)
- Android进阶之大话设计模式
- 二叉树的层次遍历---队列的使用
- ProGuard代码混淆技术详解
- 2016.8.8测试解题报告(binary,xx,minval,maxtrix)
- 图论刷题
- 【第一行代码-Android】学习(一)及在studio的迁移(2)创建活动及布局
- ubuntu系统启动后停在(initramfs)
- 颜色分块div
- Java之字节缓冲流
- 日期插件(jedate)