用递归求树的高度,哎。。。平时很少用指针,写起来挺吃力的
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct bnode
{
char data;
struct bnode *lchild,*rchild;
}btnode;
int max(int x,int y)
{
return x>y?x:y;
}
btnode *create() //建树
{
char c;
btnode *t;
c=getchar();
if(c=='#')
t=NULL;
else
{
t=(btnode *)malloc(sizeof(btnode));
t->data=c;
t->lchild=create();
t->rchild=create();
}
return t;
}
void print(btnode *t)
{
if(t!=NULL)
{
printf("%c ",t->data);
print(t->lchild);
print(t->rchild);
}
}
int high(btnode *T)
{
if(T==NULL)
return 0;
else
return max(high(T->lchild),high(T->rchild))+1;
}
int main()
{
int ans;
btnode *t;
t=create();
print(t);
printf("\n");
ans=high(t);
printf("树的