求二叉树的深度
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。
输入
输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。
输出
输出二叉树的深度。
示例输入
2 dbgeafc dgebfca lnixu linux
示例输出
4 3
提示
来源
示例程序
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
char ch;
struct node *lch,*rch;
}*A,M;
A creat (A t,char mid[],char last[],int n)
{
if(n<=0)
return NULL;
t = (A)malloc(sizeof(M));
t->ch = last[n-1];
int k = strchr(mid,last[n-1])-mid;
t->lch = creat(t->lch,mid,last,k);
t->rch = creat(t->rch,mid+k+1,last+k,n-k-1);
return (t);
}
int height(A f)
{
int x,y,k;
if(f!=NULL)
{
x=height(f->lch);
y=height(f->rch);
if(x>y)
k=x;
else
k=y;
return (k+1);
}
else
{
return 0;
}
}
int main()
{
int t,k;
A tree;
char st[50],ps[50];
scanf("%d",&t);
while(t--)
{
scanf("%s%s",st,ps);
int len=strlen(st);
tree = creat(tree,st,ps,len);
k=height(tree);
printf("%d\n",k);
k=0;
}
return 0;
}