zoukankan      html  css  js  c++  java
  • 给出二叉树先序,中序遍历,求后序遍历

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 const int maxn = 100;
     5 
     6 int n;
     7 char a[maxn], b[maxn];
     8 
     9 void dfs(int la, int ra, int lb, int rb) {
    10     if (la > ra)
    11         return;
    12     int md;
    13     for (md = la; a[md] != b[lb]; md ++);
    14     dfs(la, md - 1, lb + 1, lb + md - la);
    15     dfs(md + 1, ra, lb + md - la + 1, rb);
    16     putchar(b[lb]);
    17 }
    18 
    19 int main() {
    20     scanf("%s", b + 1);
    21     scanf("%s", a + 1);
    22     n = strlen(a + 1);
    23     dfs(1, n, 1, n);
    24     putchar(10);
    25 }
    代码君

    方法提要:
    a. 先由先序序列求得根结点;
    b. 再由根结点在中序序列中
    的位置,知:它之前访问的
    结点为其左子树结点,它之
    后访问的为其右子树结点;
    c. 递归应用a. b. 两条。      

  • 相关阅读:
    各种有趣言论收集
    人类未来进化方向恶考
    mysql 列所有表行数
    恩,有那么一个人
    00后厉害哇
    。。。。
    放弃微博,继续回来写月经
    嘿,大家还好吗
    git
    require js
  • 原文地址:https://www.cnblogs.com/usedrosee/p/4159526.html
Copyright © 2011-2022 走看看