⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue层次遍历.c

📁 编写程序
💻 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 + -