#include <stdlib.h>
#include <stdio.h>
//树的层次遍历
//ABC##DE#G##F###
typedef struct node{
char data;
struct node *lchild,*rchild;
}BitrNode,*Bitree;
Bitree createNode(){
Bitree T;
char ch;
scanf("%c",&ch);
if(ch=='#')T=NULL;
else{
if(!(T=(struct node*)malloc(sizeof(struct node))))exit(-1);
else{
T->data = ch;
T->lchild = createNode();
T->rchild = createNode();
}
}
return T;
}
//树的层次遍历,访问到一个节点分别时检查左右子树,不为空的话入队,每次循环出队一个元素,大循环条件对列不为空即front!=rear
void level_order(Bitree T){
BitrNode s[100];
Bitree p;
p = T;
int front=-1,rear=0;
if(T==NULL) return;
s[rear++] = *p;
while(front!=rear){
p = &s[++front];
printf("%c\t",p->data);
if(p->lchild!=NULL){
s[rear++] = *p->lchild;
}
if(p->rchild!=NULL){
s[rear++] = *p->rchild;
}
}
}
int main(void) {
Bitree T;
T = createNode();
level_order(T);
return 0;
}
12-06
505
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交