zoukankan      html  css  js  c++  java
  • 还原二叉树

     还原二叉树

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

    输入格式:

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

    输出格式:

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

    输入样例:

    9
    ABDFGHIEC
    FDHGIBEAC
    

    输出样例:

    5
     1 #include<stdio.h>
     2 
     3 
     4 void Input(int A[],int N){
     5   for(int i = 0; i < N; i++){
     6     char a;
     7     scanf("%c",&a);
     8     //printf("%c",a);
     9     A[i] = a - 'a';
    10   }
    11 }
    12 int FindTreeHeight(int pre[],int in[],int N,int Lp,int Li){
    13   if(N == 0) return 0;
    14   int i;
    15   for(i = Li; i < Li + N; i++){
    16     if(in[i] == pre[Lp]) break;
    17   }
    18   int NL = i - Li;
    19   int NR = Li + N - 1 - i;
    20   //printf("%d %d %d %d
    ",N,i,pre[Lp],in[i]);
    21   int HL = FindTreeHeight(pre,in,NL,Lp+1,Li);
    22   int HR = FindTreeHeight(pre,in,NR,Lp+NL+1,Li+NL+1);
    23   int res = HL > HR ? HL+1:HR+1;
    24   return res;
    25 }
    26 int main(){
    27   int N;
    28   scanf("%d",&N);
    29   int pre[N];
    30   int in[N];
    31   getchar();
    32   Input(pre,N);
    33   getchar();
    34   Input(in,N);
    35   int Height = FindTreeHeight(pre,in,N,0,0);
    36   printf("%d",Height);
    37 
    38   return 0;
    39 }
     
  • 相关阅读:
    【转载】#349
    【转载】#346
    【转载】#344
    【转载】#336
    【转载】#335
    【转载】#330
    【转载】#324
    win2008远程桌面卡顿和上传慢的解决方法
    sql2005导出数据字典
    第03组 Alpha冲刺 (6/6)
  • 原文地址:https://www.cnblogs.com/jinjin-2018/p/9147931.html
Copyright © 2011-2022 走看看