层序遍历二叉树-C语言
具体代码
#include<stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct Node{
int data;
struct Node *rchild,*lchild;
}Node,*Tree;
int TreeSize=0;
typedef struct Queue{
struct Node* num[MAXSIZE] ;
int front;
int rear;
}Queue;
void Init(Queue *Q){
Q->front=0;
Q->rear=0;
}
void Push(Queue *Q,Node* e){
Q->num[++Q->rear]=e;
}
Node* Pop(Queue *Q){
return Q->num[++Q->front];
}
void Create(Tree *T){
int e;
scanf("%d",&e);
if(e==0){
return;
}else{
TreeSize++;
(*T)=(Tree)malloc(sizeof(Node));
(*T)->data=e;
printf("请输入%d的左子节点:",(*T)->data);
Create(&((*T)->lchild));
printf("请输入%d的右子节点:",(*T)->data);
Create(&((*T)->rchild));
}
}
void LevelOrder(Tree T,Queue Q) {
Tree temp;
Push(&Q,T);
while (TreeSize>0) {
temp = Pop(&Q);
TreeSize--;
printf("%d ", temp->data);
if (temp->lchild)
Push(&Q,temp->lchild);
if (temp->rchild)
Push(&Q,temp->rchild);
}
}
int main(){
Queue Q;
Init(&Q);
Tree T;
printf("请输入头结点:(0为空结点)");
Create(&T);
LevelOrder(T,Q);
}