还原二叉树(25 分)(已知前序和中序)

Posted 蔡军帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了还原二叉树(25 分)(已知前序和中序)相关的知识,希望对你有一定的参考价值。

还原二叉树(25 分)

给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。

输入格式:

输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。

输出格式:

输出为一个整数,即该二叉树的高度。

输入样例:

9
ABDFGHIEC
FDHGIBEAC

输出样例:

5
#include<iostream>
#include<algorithm>
using namespace std;
struct Tree
{  
    char data;  
    struct Tree *left,*right;  
};
char a[105];
char b[105];
struct Tree*creat(int q,int z, int n)
{  
    struct Tree *T;  
    int i;  
    if(n<=0)
    {  
        T=NULL;  
    }
    else
    {  
        T=(struct Tree*)malloc(sizeof(struct Tree)); //首先要分配空间  才能在T中村播放数据   
        T->data=a[q];  
        for(i=0;a[q]!=b[z+i];i++);  
        T->left=creat(q+1,z,i);  
        T->right=creat(q+i+1,z+i+1,n-i-1);  
    }  
    return T;  
  
}  

int getHeight(Tree*T)
{
    int hl,hr;
    if(T)
    {
        hl=getHeight(T->left);  
        hr=getHeight(T->right);
        return max(hl,hr)+1;
    }
    else return 0;
}
int main()
{
    struct Tree *T;
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<n;i++)
    {
        cin>>b[i];
    }
    T=creat(0,0,n);
    int p=getHeight(T);
    cout<<p<<endl;
    return 0;
}

 

 

以上是关于还原二叉树(25 分)(已知前序和中序)的主要内容,如果未能解决你的问题,请参考以下文章

二叉树的还原(前序和中序中序和后序)

数据结构中已知前序序列和中序序列,怎么得出后序序列

已知一个二叉树的先序序列和中序序列,怎么求它的后序序列

已知一棵二叉树的中序和前序序列如下,求该二叉树的后序序列,并画出二叉树

C语言编程:已知二叉树前序和中序,如何求出后序遍历?

已知中序和前序重建二叉树