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 }
     
  • 相关阅读:
    计算机执行程序代码的过程分析
    iOS 操作系统架构
    ios 概况了解
    android ApplicationContext Context Activity 内存的一些学习
    android 内存优化一
    android 学习
    ios 基础学习二
    ios 集合总结
    线程之间的通讯---SynchronizationContext
    ASP.NET Core 身份验证及鉴权
  • 原文地址:https://www.cnblogs.com/jinjin-2018/p/9147931.html
Copyright © 2011-2022 走看看