#include<stdio.h>
#include<stdlib.h>
typedef struct BTree
{
char data;
struct BTree *child;
struct BTree *brother;
}BTree;
typedef struct
{
BTree *p;
int level;
}st;
void print(BTree *p)
{
if(p!=NULL)
{
printf("%c\n",p->data);
print(p->child);
print(p->brother);
}
}
void FC(BTree *b)
{
st que[100];
int front =0,rear=0,Lno,j;
BTree *q;
if(b!=NULL)
{
++rear;
que[rear].p=b;
que[rear].level=1;
while(front!=rear)
{
++front;
q=que[front].p;
Lno=que[front].level;
if(q->child!=NULL)
{
++rear;
que[rear].p=q->child;
que[rear].level=Lno+1;
}
if(q->brother!=NULL)
{
++rear;
que[rear].p=q->brother;
que[rear].level=Lno;
}
}
for(j=0;j<=rear;j++)
{
if(que[j].level==Lno)
printf("最后一代:%c\n",que[j].p->data);
}
printf("一共有%d代\n",Lno);
}
}
/*
void create(BTree **p)
{
char a;
scanf("%c",&a);
if(a!='.')
{
*p=(BTree *)malloc(sizeof(BTree));
(*p)->data=a;
create(&((*p)->child));
create(&((*p)->brother));
}
else
(*p)=NULL;
}
*/
BTree* create() //12.35.6..4...
{
BTree *p=NULL;
char a; //好蠢 如果把Btree *p放到a=getchar
a=getchar(); //下面就错了 因为C不能随用随定义
if(a!='.')
{
p=(BTree*)malloc(sizeof(BTree));
p->data=a;
p->child =create();
p->brother =create();
}
else
p=NULL;
return p;
}
int main()
{
BTree *p;
p=create();
//create(&p);
print(p);
FC(p);
system("pause");
return 0;
}
二叉树建立、打印、求高度
最新推荐文章于 2023-10-28 16:22:48 发布