求二叉树深度
求二叉树的深度
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; }