首页 > 代码库 > 树的层序遍历:
树的层序遍历:
层次遍历:即每一层从左向右输出
元素需要储存有先进先出的特性,所以选用队列存储。
队列的定义:
- #define MAX 1000
- typedef struct seqqueue{
- bintree data[MAX];
- int front;
- int rear;
- }seqqueue;
- void enter(seqqueue *q,bintree t){
- if(q->rear == MAX){
- printf("the queue is full!\n");
- }else{
- q->data[q->rear] = t;
- q->rear++;
- }
- }
- bintree del(seqqueue *q){
- if(q->front == q->rear){
- return NULL;
- }else{
- q->front++;
- return q->data[q->front-1];
- }
- }
遍历实现 :
- void level_tree(bintree t){
- seqqueue q;
- bintree temp;
- q.front = q.rear = 0;
- if(!t){
- printf("the tree is empty\n");
- return ;
- }
- enter(&q,t);
- while(q.front != q.rear){
- t=del(&q);
- printf("%c ",t->data);
- if(t->lchild){
- enter(&q,t->lchild);
- }
- if(t->rchild){
- enter(&q,t->rchild);
- }
- }
- }
树的层序遍历:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。