数据结构实验之二叉树八:(中序后序)求二叉树的深度

来源:互联网 发布:手机自动打开数据咋办 编辑:程序博客网 时间:2024/05/19 10:37

数据结构实验之二叉树八:(中序后序)求二叉树的深度

Time Limit: 1000MS Memory Limit: 65536KB

Submit Statistic

Problem Description

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

Input

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

Output

输出二叉树的深度。

Example Input

2
dbgeafc
dgebfca
lnixu
linux

Example Output

4
3

Hint

Author

#include<stdio.h>#include<stdlib.h>#include<string.h>char a[55],b[55];struct node{    char data;    struct node *lchild, *rchild;};struct node *creat(char a[],char b[],int len)//建立二叉树{    struct node *t;    int i;    if(len==0)        t = NULL;    else    {        t = (struct node *)malloc(sizeof(struct node));        t -> data = b[len-1];        for(i = 0;i < len;i++)        {            if(a[i]==b[len-1])                break;        }        t -> lchild = creat(a,b,i);//左子树部分的位置        t -> rchild = creat(a+i+1,b+i,len-i-1);//右子树部分的位置    }    return t;}int  depth(struct node *t){    int depthval;    if(t==NULL)return 0;    else    {        int depthleft = depth(t->lchild);        int depthright = depth(t -> rchild);        if(depthleft > depthright)            depthval = depthleft +1;        else depthval = depthright + 1;    }    return depthval;}int main(){    int t;    while(~scanf("%d",&t))    {        while(t--)            {                struct node *T;                int len;                scanf("%s",a);                scanf("%s",b);                len = strlen(a);                T = creat(a,b,len);                printf("%d\n",depth(T));            }    }    return 0;}
阅读全文
0 0
原创粉丝点击