您的位置:首页 > 其它

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

2016-11-10 10:40 225 查看
问题及代码:

 

 

/*

 *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; 



 

运行截图:



知识点总结:

二叉树算法库的应用。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: