树的层序遍历(c语言版)
来源:互联网 发布:永琪干了知画 编辑:程序博客网 时间:2024/05/18 03:32
层序遍历树,输出遍历结果
#include <stdio.h> #include <string.h>#include <stdlib.h>#define MAX 100typedef struct BiTNode{ //树的节点 char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; typedef struct{ //队列存储树节点 int front, rear; BiTNode * data[MAX];} Queue;void initQueue (Queue *q) //初始化队列{ q->rear=0; q->front=0;}int EmptyQueue(Queue *q) //判断队列是否为空 { if(q->rear==q->front) return 1; else return 0;}BiTNode * DeQueue(Queue *q) //队尾删除一个元素 { return q->data[(q->front)++];}void InQueue(Queue *q,BiTNode * p) //队头一个元素 { if (q->rear==MAX) { printf("队列已满!"); } else q->data[(q->rear)++]=p;}BiTree Create(BiTree T) //创建二叉树 ,这里使用“#”符号进行分隔{ char ch; ch=getchar(); if(ch=='#') T=NULL; else{ if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) printf("Error!"); T->data=ch; T->lchild=Create(T->lchild); //递归创建 T->rchild=Create(T->rchild); } return T; } Travel (BiTree T,Queue *q) //层序遍历 {BiTNode *p;p=T;if(p!=NULL)InQueue(q,p); while(!EmptyQueue(q)){p=DeQueue(q);printf("%c",p->data);if(p->lchild!=NULL)InQueue(q,p->lchild);if(p->rchild!=NULL)InQueue(q,p->rchild);}} main(){ BiTree T; Queue q;initQueue(&q);T=Create(T); Travel(T,&q);printf("\n");}测试用例及结果:
注意输入的格式,由于创建树时采用的是递归创建,所以当从左子树跳到右子树要使用#符号跳出一层递归
阅读全文
0 0
- 树的层序遍历(c语言版)
- 二叉树的遍历(递归法)C语言版
- 链式二叉树的遍历C语言版
- 【C】树的层序遍历
- 数据结构 树 二叉树的建立及遍历 C语言版
- 二叉树的非递归遍历 C语言版
- 二叉树的非递归遍历 C语言版
- 二叉树的非递归遍历 C语言版
- 二叉树的非递归遍历 C语言版
- 二叉树的建立与递归遍历C语言版
- 二叉树的中序非递归遍历c语言版
- 数据结构实验:二叉树的遍历(C语言版)
- 中序遍历非递归算法(C语言版)
- 后序遍历首尾点(C语言版)
- 数据结构 图的遍历 C语言版
- 真值表的遍历(C语言版)
- 数据结构C语言版之邻接矩阵(遍历)
- 树的基本算法(C语言版)
- Linux应用编程
- TensorFlow基本操作(二)
- jdk1.8对HashMap的优化
- Hadoop的调度器总结
- 剑指offer — 滑动窗口的最大值
- 树的层序遍历(c语言版)
- zipkin
- Tensorflow API + OpenCV (Real Time Object Detection)
- SpringMVC+zyUpload图片的批量上传
- MarkDown编辑器的功能测试文档
- 小东吖 之 java StringBuffer 和 StringBuilder 的类
- 函数
- 解决maven开发模式下dubbo服务治理的jar包版本过低
- 写在技术博客访问量突破200万之际……