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 <bits/stdc++.h>
    using namespace std;
    int Scan()
    {
        int res=0,ch,flag=0;
        if((ch=getchar())=='-')flag=1;
        else if(ch>='0'&&ch<='9')res=ch-'0';
        while((ch=getchar())>='0'&&ch<='9')res=res*10+ch-'0';
        return flag?-res:res;
    }
    void Out(int a)
    {
        if(a>9)Out(a/10);
        putchar(a%10+'0');
    }
    #define INF 0x3f3f3f3f
    int numend[50];
    int nummld[50];
    int cal[50];
    int ans[50][50000];
    int n;
    int maxdeep=0;
    void DFS(int s,int t,int deep)
    {
        int p;
        int f=0;
        if(s>t)return ;
        for(int i=n-1; i>=0; --i)
        {
            for(int j=s; j<=t; ++j)
                if(nummld[j]==numend[i])
                {
                    p=j;
                    f=1;
                    break;
                }
            if(f)break;
        }
        if(deep>maxdeep)maxdeep=deep;
        ans[deep][cal[deep]++]=nummld[p];
        int z=0;
        DFS(s,p-1,deep+1);
        DFS(p+1,t,deep+1);
    }
    int main()
    {
        memset(ans,0,sizeof(ans));
        memset(cal,0,sizeof(cal));
        cin>>n;
        for(int i=0; i<n; ++i)
            scanf("%d",&numend[i]);
        for(int i=0; i<n; ++i)
            scanf("%d",&nummld[i]);
        DFS(0,n-1,0);
        for(int i=0; i<maxdeep; ++i)
            for(int j=0; j<cal[i]; ++j)
            cout<<ans[i][j]<<" ";
        for(int i=0; i<cal[maxdeep]-1; ++i)
            cout<<ans[maxdeep][i]<<" ";
        cout<<ans[maxdeep][cal[maxdeep]-1]<<endl;
    }
    

      

    
    
    
  • 相关阅读:
    Redis之通用的key操作命令
    Redis常用命令之操作Set(集合)
    Redis常用命令之操作SortedSet(有序集合)
    Redis常用命令之操作List类型
    Winform中实现监控CPU内存使用率(附代码下载)
    Ubuntu安装配置mongodb
    修改Ubuntu国内镜像
    redis安装和配置
    爬虫(十六):scrapy爬取知乎用户信息
    爬虫(十五):scrapy中的settings详解
  • 原文地址:https://www.cnblogs.com/litingshi/p/6543577.html
Copyright © 2011-2022 走看看