zoukankan      html  css  js  c++  java
  • 还原二叉树(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;
    }
     
  • 相关阅读:
    POJ 1887 Testing the CATCHER
    HDU 3374 String Problem
    HDU 2609 How many
    POJ 1509 Glass Beads
    POJ 1458 Common Subsequence
    POJ 1159 Palindrome
    POJ 1056 IMMEDIATE DECODABILITY
    POJ 3080 Blue Jeans
    POJ 1200 Crazy Search
    软件体系结构的艺术阅读笔记1
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13270979.html
Copyright © 2011-2022 走看看