#include<stdio.h>
#include<string.h>
#include<malloc.h>
char *s;
char ss[160];
int sum1=0;
int sum2=0;
struct node
{
int data;
struct node *l,*r;
};
void creat(struct node *&T)
{
int p;
if(*s=='\0') p=1;
else if(*s==',')
{
T=NULL;
s++;
}
else
{
T=(struct node *)malloc(sizeof(struct node));
T->data=*s;
s++;
creat(T->l);
creat(T->r);
}
}
void bianlizhong(struct node *P)
{
if(P)
{
bianlizhong(P->l);
printf("%c",P->data);
bianlizhong(P->r);
}
}
void bianlihou(struct node *P)
{
if(P)
{
bianlihou(P->l);
bianlihou(P->r);
printf("%c",P->data);
}
}
void treeleves(struct node *P)
{
if(P)
{
if(P&&!P->l&&!P->r) sum1++;
treeleves(P->l);
treeleves(P->r);
}
}
/*int treeleves(struct node *P)
{
if(P)
{
if(P&&!P->l&&!P->r) sum1++;
treeleves(P->l);
treeleves(P->r);
}
return sum1;
}为什么这样不对?*/
int treedepth(struct node *P)
{
int i,j,p;
if(!P) return 0;
else
{
i=treedepth(P->l);
j=treedepth(P->r);
}
return i>j ? i+1 : j+1;
}
int main()
{
gets(ss);
s=ss;
struct node *T;
T=NULL;
creat(T);
bianlizhong(T);
printf("\n");
bianlihou(T);
printf("\n");
treeleves(T);
printf("%d\n",sum1);
printf("%d\n", treedepth(T));
}