zoukankan      html  css  js  c++  java
  • L2-006. 树的遍历

    L2-006. 树的遍历

    时间限制 400ms  内存限制 65536 kB

    给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。

    输入格式:

    输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。

    输出格式:

    在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。

    输入样例:

    7
    2 3 1 5 7 6 4
    1 2 3 4 5 6 7
    

    输出样例:

    4 1 6 3 5 7 2
    

    题解:

      水题,直接模拟就好……

    代码 C++:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <queue>
     4 #define INF 0x7F7F7F7F
     5 #define MX 35
     6 int pst[MX], iPst, ode[MX], tre[MX][3], nTre, n;
     7 void red(){
     8     int i, tmp;
     9     scanf("%d", &n);
    10     for (i = 0; i < n; ++i) scanf("%d", pst + i);
    11     for (i = 0; i < n; ++i) scanf("%d", &tmp), ode[tmp] = i;
    12 }
    13 int bul(int now, int lOde, int rOde){//[l, r]
    14     int iOde = ode[pst[iPst]];
    15     if (iOde < lOde || rOde < iOde){ --nTre; return INF; }
    16     if (tre[now][0] == INF) tre[now][0] = pst[iPst--];
    17     tre[now][2] = bul(tre[now][2] = ++nTre, iOde + 1, rOde);
    18     tre[now][1] = bul(tre[now][1] = ++nTre, lOde, iOde - 1);
    19     return now;
    20 }
    21 int main() {
    22     memset(tre, INF, sizeof tre);
    23     red();
    24     bul(0, 0, iPst = --n);
    25     int now, i;
    26     printf("%d", pst[n]);
    27     std::queue<int> q; for (i = 1; i < 3; ++i) q.push(tre[0][i]);
    28     while (!q.empty()){
    29         now = q.front(); q.pop();
    30         if (now == INF) continue;
    31         printf(" %d", tre[now][0]);
    32         for (i = 1; i < 3; ++i) q.push(tre[now][i]);
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    异常:Unknown lifecycle phase "mvn". You must specify a valid lifecycle
    java中数的表示
    windows7 桌面突然卡住了,点击右键点不了,点击桌面软件点不了,怎么办?
    DJango错误日志生成
    drf框架接口文档
    drf框架中分页组件
    UVa10234 Race
    洛谷P2982 [USACO10FEB]慢下来Slowing down
    UVa10820 Send a Table
    POJ1861 Network
  • 原文地址:https://www.cnblogs.com/Simon-X/p/6631705.html
Copyright © 2011-2022 走看看