• l2-006 树的遍历


    L2-006. 树的遍历

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

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

    输入格式:

    输入第一行给出一个正整数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

    分析:

     这道题和pat l2-004简直就是同一道题目啊...

     只不过那题是给你中序和先序...一个意思嘛

    在先序或后序中,只要我们知道了左子树或者右子树的范围,我们就可以找到根节点的值,从而在中序中找到根节点的位置,然后递归去做同样的步骤就好啦。层序遍历其实就是bfs啦!用用队列就好了...

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=1e5;
     4 int mid[32], bk[32], tree[maxn];
     5 struct node{
     6     int l, r;
     7 }a[maxn];
     8 int build(int la, int lb, int ra, int rb){
     9     if(la>lb)    return 0;
    10     int root=bk[rb];
    11     int p1, p2;
    12     p1=la;
    13     while(root!=mid[p1])    p1++;
    14     p2=p1-la;
    15     a[root].l=build(la, p1-1, ra, ra+p2-1);
    16     a[root].r=build(p1+1, lb, ra+p2, rb-1);
    17     return root;
    18 }
    19 void bfs(int x){
    20     int cnt=0;
    21     queue<int>q;
    22     q.push(x);
    23     while(q.size()){
    24         int m=q.front(); q.pop();
    25         ++cnt==1? cout<<m:cout<<" "<<m;
    26         if(a[m].l!=0)
    27             q.push(a[m].l);
    28         if(a[m].r!=0)
    29             q.push(a[m].r);
    30     }
    31 }
    32 int main(){
    33     int n;
    34     cin>>n;
    35     for(int i=0; i<n; i++)
    36         cin>>bk[i];
    37     for(int i=0; i<n; i++)
    38         cin>>mid[i];
    39     int root=build(0, n-1, 0, n-1);
    40     bfs(root);
    41     
    42     return 0;
    43 }
  • 相关阅读:
    同花顺黄金分割线及斐波那契数列分析网格(主图公式)
    走在城市计算的路上
    206. Reverse Linked List
    237. Delete Node in a Linked List
    876. Middle of the Linked List
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted List
    33. Search in Rotated Sorted Array
    852. Peak Index in a Mountain Array
    744. Find Smallest Letter Greater Than Target
  • 原文地址:https://www.cnblogs.com/ledoc/p/6591900.html
Copyright © 2020-2023  润新知