题目:求二叉树中以元素值为x的节点为根的子树的深度
#include<cstdio>
#include<malloc.h>
typedef struct btree{
char data;
btree *ltree,*rtree;
}tree,*Tree;
void create(Tree &t)
{
char c;
scanf("%c",&c);
if(c==' ') t=NULL;
else{
if(!(t=(Tree)malloc(sizeof(tree)))) return;
t->data=c;
create(t->ltree);
create(t->rtree);
}
}
int deep(Tree &t)
{
int m,n;
if(t){
m=deep(t->ltree);
n=deep(t->rtree);
return m>=n?m+1:n+1;
}
else return 0;
}
int pre(Tree &t,char x)
{
int m,n;
if(t){
if(t->data==x) return deep(t);
//printf("%c\n",t->data);
else{
m=pre(t->ltree,x);
n=pre(t->rtree,x);
return m>=n?m:n;
}
}
else return 0;
}
int main()
{
// freopen("in.txt","r",stdin);
Tree t;
create(t);
getchar();
char x;
scanf("%c",&x);
// printf("%c",x);
int f=pre(t,x);
printf("%d",f);
return 0;
}
//输入:ABC DE G F (F后面有三个空格)
//A