• 二叉树前序遍历+中序遍历->后序遍历


      BNU的基础题,数据结构的基础题,顺便搞下.

    二叉树是一种常用的数据结构。我们可以用大写的英文字母表示二叉树的节点。

    如下:

    		    B   
    		   /      
    		  /        
                     C      A
    		         
    		          
    		           D
    

    对于二叉树,有前序、中序和后序三种遍历方式。 现在给你一棵二叉树的前序和中序遍历,请你求出这棵二叉树的后序遍历结果。

     

    Input

    输入数据有多组,每组数据一行。

    每行由两个字符串组成(每个字符串长度最大为26)。表示一棵二叉树的前序和中序遍历结果。

    题目保证前序和中序遍历是合法的(即肯定可以确定一棵二叉树)。

     

    Output

    对于每组输入,输出对应的二叉树的后序遍历结果。

    注意:本题输入输出都在控制台中,使用标准输入输出函数即可,不需要读写文件。

     

    Sample Input

    BCAD CBAD
    ABDGKLRVWSXCEHMNFIOTUJPYQZ KGVRWLSXDBAMHNECTOUIFPYJZQ
    

    Sample Output

    CDAB
    KVWRXSLGDBMNHETUOIYPZQJFCA
    

    Source

    以前一直不会写这样的题,但是看了别人的代码,感觉递归的意义我还是没有很好的理解

    代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 char s1[30], s2[30];
     5 int cnt;
     6 
     7 void tree(int left, int right, char ch)
     8 {
     9     for (int i = left; i<right; i++){
    10         if (s2[i] == ch){
    11             if (left < i)
    12                 tree(left, i, s1[cnt++]);
    13             if (i+1 < right)
    14                 tree(i+1, right, s1[cnt++]);
    15             printf("%c", ch);
    16             break;
    17         }
    18     }
    19 }
    20 
    21 
    22 int main(void)
    23 {
    24     while (scanf("%s%s",s1,s2) != EOF)
    25     {
    26         cnt = 0;
    27         tree(0, strlen(s1), s1[cnt++]);
    28         printf("
    ");
    29     }
    30     return 0;
    31 }

     

  • 相关阅读:
    What does the LayoutAwarePage Class provide
    UML类图几种关系的总结
    WriteableBitmap 巧学巧用
    iOS图片填充UIImageView(contentMode)
    UIImage扩展用代码直接改变图片大小
    iOS各框架功能简述以及系统层次结构简单分析
    【深拷贝VS浅拷贝】
    【node】node连接mongodb操作数据库
    【node】mongoose的基本使用
    【node】websocket
  • 原文地址:https://www.cnblogs.com/wikioibai/p/4456154.html
Copyright © 2020-2023  润新知