二叉树的层次遍历---队列的使用
2016-08-08 18:56
281 查看
数据结构实验之二叉树五:层序遍历
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; } } } }
相关文章推荐
- [二叉树专题]:广度优先:按层次遍历二叉树的非递归实现||使用队列实现层次遍历二叉树
- 二叉树的层次遍历 队列
- 二叉树按层次遍历--队列实现
- 数据结构 利用循环队列层次遍历一棵二叉树 递归实现
- 二叉树按层次遍历--队列实现
- 利用队列实现二叉树的层次遍历
- 二叉树按层次遍历--队列实现
- 二叉树层次遍历(借助队列实现)
- 采用队列数据结构按层次遍历二叉树
- 199.leetcode Binary Tree Right Side View(medium)[层次遍历二叉树 队列]
- 利用队列进行二叉树的层次遍历
- 数据结构 — 6.顺序队列(循环)实现二叉树层次遍历
- 采用队列数据结构按层次遍历二叉树
- 编程之美。分层遍历二叉树(使用队列)
- 二叉树层次遍历与链队列
- 【C/C++】【用队列结构实现二叉树的层次遍历】
- c语言实现二叉树层次遍历(借助队列实现)
- 二叉树的层次非递归遍历运用队列
- 利用队列层次遍历二叉树
- 从根开始按层次(第0层->第1层->第2层)遍历一颗二叉树,需要使用什么辅助数据结构?