• 还原二叉树(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;
    }
     
  • 相关阅读:
    hdu1875(最小生成树prime)
    hdu1839(最小生成树)
    poj2739(尺取法+质数筛)
    poj2100(尺取法)
    codeforces-div2-449-B
    gym-101350M
    gym-10135I
    gym-101350H
    gym-101350D
    hdu 5569
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13270979.html
Copyright © 2020-2023  润新知