【第十一周 项目1-验证算法(1)层次遍历算法的验证】

来源:互联网 发布:小牛学堂大数据就业班 编辑:程序博客网 时间:2024/04/28 19:00

问题及代码:

 

 

/*
 *Copyright(c)2015级,烟台大学 计算机与控制工程学院
 *All right reserved.
 *文件名称:main.cpp
 *作者:胡馨月
 *完成日期;2016年11月10日
 *版本号;v1.0
 *
 *问题描述:实现二叉树的先序、中序、后序遍历的非递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。
 *程序输出:
*/

 注:在main函数中,创建的用于测试的二叉树如下——
这里写图片描述

main.cpp文件代码

 

#include "btree.h" 
 
 
void LevelOrder(BTNode *b) 

    BTNode *p; 
    BTNode *qu[MaxSize];    //定义环形队列,存放节点指针 
    int front,rear; //定义队头和队尾指针 
    front=rear=-1;      //置队列为空队列 
    rear++; 
    qu[rear]=b;     //根节点指针进入队列 
    while (front!=rear) //队列不为空 
    { 
        front=(front+1)%MaxSize; 
        p=qu[front];        //队头出队列 
        printf("%c ",p->data);  //访问节点 
        if (p->lchild!=NULL)    //有左孩子时将其进队 
        { 
            rear=(rear+1)%MaxSize; 
            qu[rear]=p->lchild; 
        } 
        if (p->rchild!=NULL)    //有右孩子时将其进队 
        { 
            rear=(rear+1)%MaxSize; 
            qu[rear]=p->rchild; 
        } 
    } 

 
 
int main() 

    BTNode *b1,*b2; 
 
 
    CreateBTNode(b1,"A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))"); 
    printf("二叉树b1: "); 
    DispBTNode(b1); 
    printf("\n"); 
    printf("层次遍历序列:\n"); 
    LevelOrder(b1); 
    printf("\n\n"); 
    DestroyBTNode(b1); 
 
 
    CreateBTNode(b2,"A(B(D,E(H(J,K(L,M(,N)))))"); 
    printf("二叉树b2: "); 
    DispBTNode(b2); 
    printf("\n"); 
    printf("层次遍历序列:\n"); 
    LevelOrder(b2); 
    DestroyBTNode(b2); 
    return 0; 

 

运行截图:


知识点总结:

二叉树算法库的应用。

 

0 0
原创粉丝点击