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

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

    输入格式:

    输入第一行给出一个正整数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<algorithm>
    #include<iostream>
    #include<cstdio>
    #include<vector>
    #include<set>
    #include<queue>
    using namespace std;
    
    const int N = 50 + 5;
    
    struct node{
        int key, lchild, rchild;
        node(){
            lchild = rchild = 0;
        }
    }Node[N];
    
    vector<int> post, in;
    int n, key, st;
    void DFS(int &root, int ls, int lt, int is, int it){
        if(root == 0) root = ++st;
        int p = post[lt];
        Node[root].key = p;
    
        int pos = is;
        while(in[pos] != p) pos++;
        if(pos != is){
            DFS(Node[root].lchild, ls, ls + pos - is - 1, is, pos - 1);
        }
        if(pos != it){
            DFS(Node[root].rchild, ls + pos - is, lt - 1, pos + 1, it);
        }
    }
    void BFS(int root){
        int cnt = 0;
        queue<int> Q;
        Q.push(root);
        while(!Q.empty()){
            int tmp = Q.front(); Q.pop();
            printf("%d%c", Node[tmp].key, ++cnt == n?'
    ':' ');
            if(Node[tmp].lchild){
                Q.push(Node[tmp].lchild);
            }
            if(Node[tmp].rchild){
                Q.push(Node[tmp].rchild);
            }
        }
    }
    int main(){
        scanf("%d", &n);
        for(int i = 0; i < n; i++){
            scanf("%d", &key);
            post.push_back(key);
        }
        for(int i = 0; i < n; i++){
            scanf("%d", &key);
            in.push_back(key);
        }
        int root = 0;
        st = 0;
        DFS(root, 0, n-1, 0, n-1);
        BFS(root);
    }
  • 相关阅读:
    SNMP概述–运维必知的协议基础
    关于多线程情况下Net-SNMP v3 版本导致进程假死情况的跟踪与分析
    关于snmp octet string和普通string问题
    SVN状态说明
    SNMP mib文件说明
    Linux之 proc文件系统
    django .all .values .value_list 数据库获取数据
    Django form验证
    JSONP实现
    iframe和form表单实现ajax请求上传数据
  • 原文地址:https://www.cnblogs.com/Pretty9/p/8623828.html
Copyright © 2011-2022 走看看