zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    AD中各层的说明
    Altium designer的PCB设计规则
    python 的基础 学习 第三天 编码的初始
    python 的基础 学习 第三
    python的基础初始第二天
    python 的基础 学习 第一天
    Liunx ls命令
    Liunx cd命令
    CentOS 7系统关闭yum自动下载更新
    【转】XenServer体系架构解析
  • 原文地址:https://www.cnblogs.com/ledoc/p/6591900.html
Copyright © 2011-2022 走看看