zoukankan      html  css  js  c++  java
  • PAT【L2-006 树的遍历】

    L2-006 树的遍历(25 分)

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

    输入格式:

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

    题解:先根据二叉树的后序和中序遍历建立二叉树,然后再层序输出即可。建立二叉树的过程就是一个递归过程。

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <vector>
    #include <set>
    #include <map>
    #include <queue>
    using namespace std;
    int cnt=0;
    int pre[33];
    typedef struct node{
        int data;
        node *lchild,*rchild;
    }BiTNode,*BiTree;
    node* toPre(int post[],int in[],int n){
        if(n<=0) return NULL;
        int t,root=post[n-1];
        BiTree T;
        T = new BiTNode;
        T->lchild=NULL;
        T->rchild=NULL;
        for(int i=0;i<n;i++){
            if(in[i]==root){
                t=i;
                break;
            }
        }
        T->data=root;
        T->lchild=toPre(post,in,t);
        T->rchild=toPre(post+t,in+t+1,n-t-1);
        return T;
    }
    void levelOrder(BiTree T){
        queue<BiTree> q;
        q.push(T);
        int i=0;
        while(!q.empty()){
            BiTree t;
            t=q.front();
            q.pop();
            pre[i++]=t->data;
            if(t->lchild) q.push(t->lchild);
            if(t->rchild) q.push(t->rchild);
        }
    }
    int main()
    {
        int post[33],in[33];
        int n;
        cin>>n;
        for(int i=0;i<n;i++){
            cin>>post[i];
        }
        for(int i=0;i<n;i++){
            cin>>in[i];
        }
        BiTree T;
        T=new BiTNode;
        T->lchild=NULL;
        T->rchild=NULL;
        T=toPre(post,in,n);
        levelOrder(T);
        for(int i=0;i<n-1;i++){
            printf("%d ",pre[i]);
        }
        printf("%d
    ",pre[n-1]);
        return 0;
    }
    

  • 相关阅读:
    uap
    打印机驱动下载
    hsf
    系统安装
    npm
    webuploader传递参数
    thinkphp5集成H-ui后台(五)集成webUploader
    webUploader上传视频,包括上传进度、上传状态、暂停和取消等
    webuploader php上传视频
    使用Webuploader大文件分片传输
  • 原文地址:https://www.cnblogs.com/kzbin/p/9205192.html
Copyright © 2011-2022 走看看