📄 queue层次遍历.c
字号:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef char DataType;
#include "BiTree.h"
#include "BiTreeTraverse.h"
typedef BiTreeNode QDataType;
#include "LinQueue.h"
//将每个层次的节点从左到右依次入队列,再依次出队列并在出队列的同时将其孩子节点按左到右的顺序出队列
//出队列的同时打印结果,以此作为循环,队列为空时结束循环
void QueueOrder(BiTreeNode *t,LQueue q)
{
BiTreeNode ttemp;
int count=0;
QueueAppend(&q,*t);
count++;
do
{
QueueDelete(&q,&ttemp);
printf("%c ",ttemp.data);
count--;
if(ttemp.leftChild!=NULL)
{
QueueAppend(&q,*(ttemp.leftChild));
count++;
}
if(ttemp.rightChild!=NULL)
{
QueueAppend(&q,*(ttemp.rightChild));
count++;
}
} while(count>0);
return;
}
void main(void)
{
LQueue Queue;
BiTreeNode *tree,*p,*pp;
QueueInitiate(&Queue);
BiTreeInitiate(&tree);
/*创建课本P165图7-10(b)结构的树*/
p=InsertLeftNode(tree,'A');
p=InsertLeftNode(p,'B');
p=InsertLeftNode(p,'D');
p=InsertRightNode(p,'G');
p=InsertRightNode(tree->leftChild,'C');
pp=p;
InsertLeftNode(p,'E');
InsertRightNode(pp,'F');
PrintBiTree(tree,0);
printf("队列遍历\n");
QueueOrder(tree->leftChild,Queue); //创建的树附带头节点
BiTreeDestroy(&tree);
QueueDestroy(Queue);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -