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

来源:互联网 发布:数据恢复大师下载 编辑:程序博客网 时间:2024/06/10 06:55

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

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss

Problem Description

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

Input

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

Output

输出二叉树的深度。

Example Input

2dbgeafcdgebfcalnixulinux

Example Output

43

Hint

代码如下:

#include<bits/stdc++.h>using namespace std;struct node{    char data;    struct node *left;    struct node *right;};struct node *Creat(int n,char *str,char *str1){    struct node *tree;    tree=new node;    if(n==0)        return NULL;    int i;    tree->data=str1[n-1];    for(i=0; i<n; i++)    {        if(str[i]==str1[n-1])        {            break;        }    }    tree->left=Creat(i,str,str1);    tree->right=Creat(n-i-1,str+i+1,str1+i);    return tree;};int Deepth(struct node *tree){    int hl,hr;    int max;    if(tree)    {        hl=Deepth(tree->left);        hr=Deepth(tree->right);        if(hl>=hr)            max=hl;        else            max=hr;        return max+1;    }    else return 0;}int main(){    int t;    char str[100];    char str1[100];    struct node *tree;    cin>>t;    while(t--)    {        cin>>str;        cin>>str1;        int len=strlen(str);        tree=Creat(len,str,str1);        int k=Deepth(tree);        cout<<k<<endl;    }    return 0;}



阅读全文
0 0
原创粉丝点击