queue层次遍历.c

来自「编写程序」· C语言 代码 · 共 71 行

C
71
字号
#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 + =
减小字号Ctrl + -
显示快捷键?