#include<stdio.h>
#include<string.h>
typedef struct no
{
char data;
struct no *lc,*rc;
}node;
int l=0,k=0;
char a[50];
node *creat()
{
node *p;
char c;
c=a[l++];
if(c==',')
{
return NULL;
}
else
{
p=new(node);
p->data=c;
p->lc=creat();
p->rc=creat();
}
return p;
}
void middle(node *p)
{
if(p)
{
middle(p->lc);
printf("%c",p->data);
middle(p->rc);
}
}
void last(node *p)
{
if(p)
{
last(p->lc);
last(p->rc);
printf("%c",p->data);
}
}
void jiedian(node *p)
{
if(p)
{
if(p->lc==NULL&&p->rc==NULL)
{
k++;
}
else
{
jiedian(p->lc);
jiedian(p->rc);
}
}
}
int deep(node *p)
{
int ld=0,rd=0;
if(!p)
{
return 0;
}
else
{
ld=deep(p->lc);
rd=deep(p->rc);
if(ld>rd)
{
return ld+1;
}
else
return rd+1;
}
}
int main()
{
node *q;
int d;
q=new(node);
scanf("%s",a);
q=creat();
middle(q);
printf("\n");
last(q);
printf("\n");
jiedian(q);
printf("%d\n",k);
d=deep(q);
printf("%d\n",d);
return 0;
}
数据结构实验之二叉树的建立与遍历
最新推荐文章于 2019-05-29 18:25:59 发布