第十一周实践项目~验证算法 层次遍历算法的验证

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ZKX2015/article/details/49978521

头文件和功能函数与上周博文相同

主函数:

#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("层次遍历序列:");
  LevelOrder(b1);
  DestroyBTNode(b1);
  CreateBTNode(b2,"A(B(D,E(H(J,K(L,M(,N)))))");
  printf("二叉树b2: ");
  DispBTNode(b2);
  printf("\n");
  printf("层次遍历序列:");
  LevelOrder(b2);
  DestroyBTNode(b2);
  return 0;
}
#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("层次遍历序列:");
  LevelOrder(b1);
  DestroyBTNode(b1);
  CreateBTNode(b2,"A(B(D,E(H(J,K(L,M(,N)))))");
  printf("二叉树b2: ");
  DispBTNode(b2);
  printf("\n");
  printf("层次遍历序列:");
  LevelOrder(b2);
  DestroyBTNode(b2);
  return 0;
}

运行结果:



猜你喜欢

转载自blog.csdn.net/ZKX2015/article/details/49978521