求二叉树的深度

来源:互联网 发布:高职大数据专业课程 编辑:程序博客网 时间:2024/06/04 18:00

求二叉树的深度

Time Limit: 1000MS Memory limit: 65536K

题目描述

已知一颗二叉树的中序遍历序列和后序遍历序列,求二叉树的深度。

输入

输入数据有多组,输入T,代表有T组数据。每组数据包括两个长度小于50的字符串,第一个字符串表示二叉树的中序遍历,第二个表示二叉树的后序遍历。

输出

输出二叉树的深度。

示例输入

2dbgeafcdgebfcalnixulinux

示例输出

43

提示

 

来源

 

示例程序

 

  • 提交 
  • 状态

 

#include<stdio.h>#include<stdlib.h>#include<string.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1#define MAXQSIZE 100typedef int Status;typedef char TElemType;TElemType ch[51];Status i;typedef struct BiTNode{    TElemType data;    struct BiTNode *lchild,*rchild;} BiTNode,*BiTree;typedef BiTree QElemType;BiTree  CreateBiTree(char *hou,char *zhong,int len){    if(len<=0)return NULL;    BiTNode *T;    T=(BiTree)malloc(sizeof(BiTNode));    T->data=*(hou+len-1);    char *p;    for(p=zhong; p; p++)        if(*p==*(hou+len-1))            break;    int k=p-zhong;    T->lchild=CreateBiTree(hou,zhong,k);    T->rchild=CreateBiTree(hou+k,p+1,len-k-1);    return T;}Status shendu(BiTree T){    int m,n;    if(!T)return 0;    m=shendu(T->lchild);    n=shendu(T->rchild);    if(m>n)        return m+1;    else return n+1;}int main(){    int len,n;    char hou[51],zhong[51];    BiTree T;    scanf("%d",&n);    while(n--)    {        scanf("%s%s",zhong,hou);        len=strlen(hou);        T=CreateBiTree(hou,zhong,len);        printf("%d\n",shendu(T));    }    return 0;}


 

0 0
原创粉丝点击