• 玩转二叉树(二叉树的遍历)


    玩转二叉树

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

    给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。

    输入格式:

    输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。

    输出格式:

    在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。

    输入样例:
    7
    1 2 3 4 5 6 7
    4 1 3 2 6 5 7
    
    输出样例:
    4 6 1 7 5 3 2
    #include <cstdio>  
    #include <algorithm>  
    #include <iostream>  
    #include <set> 
    #include<queue>
    #include<cstring>
    #include<string>
    #include<cstdio>
    using namespace std;  
    int md[55];
    int sd[55];
    queue<int>q;
    struct node
    {
        int l,r;
    }tree[355];
    
    int build(int la,int ra,int lb,int rb)  
    {  
        if(lb>rb)return 0;  
        int rt=sd[la],p1=lb,p2;  
        while(md[p1]!=rt)p1++;  
        p2=p1-lb;  
        tree[rt].l=build(la+1,la+p2,lb,p1-1);  
        tree[rt].r=build(la+p2+1,ra,p1+1,rb);  
        return rt;  
    }  
    
    int a[355];
    int ans=1;
    
    void bfs(int root)
    {
        q.push(root);
        while(!q.empty())
        {
            int v=q.front();q.pop();
            a[ans++]=v;
            if(tree[v].r) q.push(tree[v].r);
            if(tree[v].l) q.push (tree[v].l);
            
        }
    }
    
    
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++) cin>>md[i];
        for(int i=1;i<=n;i++) cin>>sd[i];
        build(1,n,1,n);
        bfs(sd[1]);
        for(int i=1;i<=ans-1;i++)
        {
            cout<<a[i];
            if(i!=ans-1) cout<<" ";
        }
        return 0;
    }



  • 相关阅读:
    MaxScale智能读写
    flask简单demo
    django简单demo
    git原生私服之git&gitweb
    gerrit 解决中文乱码相关配置(转载)
    gerrit集成gitweb:Error injecting constructor, java.io.IOException: Permission denied
    gerrit: Error in POST /accounts/self/preferences
    redmine 配置邮件发送为async后,不能发送邮件(转载)
    gerrit error: unpack failed: error Permission denied
    centos修改hostname以及时间同步
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13271088.html
Copyright © 2020-2023  润新知