zoukankan      html  css  js  c++  java
  • pat1020. Tree Traversals (25)

    1020. Tree Traversals (25)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    16000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree.

    Input Specification:

    Each input file contains one test case. For each case, the first line gives a positive integer N (<=30), the total number of nodes in the binary tree. The second line gives the postorder sequence and the third line gives the inorder sequence. All the numbers in a line are separated by a space.

    Output Specification:

    For each test case, print in one line the level order traversal sequence of the corresponding binary tree. All the numbers in a line must be separated by exactly one space, and there must be no extra space at the end of the line.

    Sample Input:
    7
    2 3 1 5 7 6 4
    1 2 3 4 5 6 7
    
    Sample Output:
    4 1 6 3 5 7 2
    

    提交代码

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<cstring>
     5 #include<queue>
     6 #include<vector>
     7 #include<cmath>
     8 using namespace std;
     9 int post[35],in[35];
    10 struct node{
    11     int v;
    12     node *l,*r;
    13     node(){
    14         l=r=NULL;
    15     }
    16 };
    17 void BuildTree(int *post,int *in,int n,node *&h){
    18     if(!n){
    19         return;
    20     }
    21     h=new node();
    22     int mid=post[n-1];
    23     h->v=mid;
    24     int i;
    25     for(i=0;i<n;i++){
    26         if(in[i]==mid){
    27             break;
    28         }
    29     }
    30     BuildTree(post,in,i,h->l);
    31     BuildTree(post+i,in+i+1,n-1-i,h->r);
    32 }
    33 int main(){
    34     int n,i;
    35     node *h;
    36     scanf("%d",&n);
    37     for(i=0;i<n;i++){
    38         scanf("%d",&post[i]);
    39     }
    40     for(i=0;i<n;i++){
    41         scanf("%d",&in[i]);
    42     }
    43     BuildTree(post,in,n,h);
    44     node cur;
    45     queue<node> q;
    46     q.push(*h);
    47     printf("%d",h->v);
    48     while(!q.empty()){
    49         cur=q.front();
    50         q.pop();
    51         if(cur.l!=NULL){
    52             q.push(*(cur.l));
    53             printf(" %d",cur.l->v);
    54         }
    55         if(cur.r!=NULL){
    56             q.push(*(cur.r));
    57             printf(" %d",cur.r->v);
    58         }
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    Android应用开发学习笔记之事件处理
    [置顶] 炎炎夏日,给你一次极爽的开发体验!——统一开发环境功能升级优化,正式上线V2.0!
    POJ 3468 A Simple Problem with Integers (伸展树区间更新求和操作 , 模板)
    京东商城发现了一枚Bug
    iOS_40_核心动画
    SVN——库合并
    ORACLE 8i 遇到报错:ORA-01631: max # extents (505) reached in table
    HDU 5366:The mook jong 递推
    Linux平台下裸设备的绑定:
    CSP:使用CryptoAPI解码X509证书内容
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4762321.html
Copyright © 2011-2022 走看看