这是层次输出的代码(C++)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
using namespace std;
#define MAX_VALUE 100;
typedef struct BTNode
{ char data;
BTNode* lchild;
BTNode* rchild;
}BT,*B;
typedef struct QUEUE
{ int front;
int rear;
BT* s[MAX_VALUE];
}Q;
class HD
{
public:
HD(){
B T;
root=CreateBiTree( );
};
~HD(){
Delete(root);
};
B CreateBiTree()
{ BT* T=new BT;
char ch;
ch = getchar();
if(ch=='\n') exit(1);
if(ch==' ') T=NULL;
else{
if(!(T=(BT *)malloc(sizeof(BT))))
{cout<<"分配结点存储空间失败";
exit(1);
}
T->data=ch;
T->lchild=CreateBiTree();
T->lchild=CreateBiTree();
}
return T;
};
void CREATE_QUEUE()
{
s.front=s.rear=0;
}
bool IS_EMPTY()
{
return s.front==s.rear;
}
bool IS_FULL()
{
return (s.rear+1)%MAX_VALUE==s.front;
}
void IN_QUEUE(B t)
{
s.s[s.rear]=t;
s.rear=(s.rear+1)%MAX_VALUE;
}
BT* OUT_QUEUE()
{ BT* T=new BT;
T=s.s[s.front];
s.front=(s.front+1)%MAX_VALUE;
return T;
}
void OUT_BINTREE()
{
B t;
CREATE_QUEUE();
if(root==NULL)
exit(1);
IN_QUEUE(root);
while(!IS_EMPTY())
{ t=OUT_QUEUE();
if(t->data!=NULL)
{ cout<<t->data;
if(!IS_FULL())
IN_QUEUE(t->lchild);
if(!IS_FULL())
IN_QUEUE(t->rchild);
}
else
cout<<"\n";
}
}
void Delete(B T)
{
Delete(T->lchild);
Delete(T->rchild);
delete T;
}
protected:
Q s;
B root;
};
void main()
{
HD hd;
hd.OUT_BINTREE();
}