69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *lchild,*rchild;
}BItree,*BtNode; //二叉树结点
typedef struct{
BtNode a[100];
int front,rear;
}Queue;//队列
void creatree(BtNode tree) //递归先序建立二叉树
{
char c;
c=getchar();
if(c=='#')
tree=NULL;
else {
tree=(BtNode)malloc(sizeof(BItree));
tree->data=c-'0';
creatree(tree->lchild);
creatree(tree->rchild);
}
}
void levelpush(BtNode root) //按层输出
{
Queue q;
BtNode p;
q.front=0;
q.rear=0;
q.a[q.rear++]=root;
while(q.front!=q.rear)
{
p=q.a[q.front++];
printf("%3d",p->data);
if(p->lchild)
q.a[q.rear++]=p->lchild;
if(p->rchild)
q.a[q.rear++]=p->rchild;
}
}
int main ()
{
BtNode root;
creatree(root);
printf("按层输出:\n");
levelpush(root);
return 0;
}