如何用层序遍历二叉树
发布网友
发布时间:2022-07-13 23:55
我来回答
共3个回答
热心网友
时间:2023-09-14 02:08
#include<stdio.h>
#include<stdlib.h>
#define M 10
typedef struct node
{ int data;
struct node *lchild,*rchild;
}BitTNode,*BiTree;
int front=0,rear=0;
BitTNode *que[10];
BitTNode *CreateBiTree()/*创建二叉树*/
{
BitTNode *t;
int x;
scanf("%d",&x);
if(x==0) t=NULL;
else
{
t=(BitTNode *)malloc(sizeof(BitTNode));
t->data=x;
t->lchild=CreateBiTree();
t->rchild=CreateBiTree();
}
return t;
}
void Enqueue(BitTNode *t)/*进队列*/
{if (front!=(rear+1)%M)
{
rear=(rear+1)%M;
que[rear]=t;
}
}
BitTNode *Delqueue()/*出队列*/
{ if(front==rear)return NULL;
{ front=(front+1)%M;
return (que[front]);
}
}
void LevOrder(BiTree t)/* 按层次遍历二叉树t */
{
BitTNode *p;
if(t!=NULL)
{
Enqueue(t);
while (front!=rear)
{ p=Delqueue();
printf("%4d",p->data);
if(p->lchild!=NULL) Enqueue(p->lchild);
if(p->rchild!=NULL) Enqueue(p->rchild);
}
}
}
void main()/*主程序*/
{BitTNode *T;
printf("创建一个二叉树:\n");
T=CreateBiTree();
printf("\n层次顺序遍历二叉树");
LevOrder(T);
printf("\n");
}
热心网友
时间:2023-09-14 02:08
void Bitree::floorder(){
if(T!=NULL){
bnode*x;
queue1.append(T);
while(!queue1.empty()){
queue1.get_front(x);
queue1.serve();
cout<<x->data<<" ";
if(x->lchild!=NULL)queue1.append(x->lchild);
if(x->rchild!=NULL)queue1.append(x->rchild);
}
}
cout<<endl;
}
热心网友
时间:2023-09-14 02:09
用queue……追问可不可以帮忙写一下