zoukankan      html  css  js  c++  java
  • L2-011. 玩转二叉树

    题目链接:L2-011. 玩转二叉树

    和之前的题一样,只需要改动一点。

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <vector>
    #include <queue>
    using namespace std;
    const int maxn = 1e3+5;
    int a[maxn];
    int b[maxn];
    int floor1[maxn];
    int tr[maxn<<2];
    int retr[maxn<<2];
    int n;
    void build(int x,int al,int ar,int bl,int br)
    {
        if(ar<al||br<bl) return;
        if(al == ar)
        {
            tr[x] = a[al];
            return;
        }
        for(int i = 1; i<=n; i++)
        {
            if(a[i]==b[bl])
            {
                tr[x] = a[i];
                build(2*x,i+1,ar,bl+i-al+1,br);   //只需要将之前的代码上下两句调换即可。
                build(2*x+1,al,i-1,bl+1,bl+i-al);
    
    
                break;
            }
        }
    }
    
    void bfs(int x)  //按层序遍历
    {
        queue<int> q;
        q.push(x);
        int ans = 1;
        while(!q.empty())
        {
            int y = q.front();
            q.pop();
            if(tr[y]==0) continue;
            floor1[ans++] = tr[y];
            q.push(2*y);
            q.push(2*y+1);
        }
    }
    int main()
    {
        memset(tr,0,sizeof(tr));
        scanf("%d",&n);
        for(int i = 1; i<=n; i++)
        {
            scanf("%d",&a[i]);
        }
        for(int i = 1; i<=n; i++)
        {
            scanf("%d",&b[i]);
        }
        build(1,1,n,1,n);
        retr[1] = tr[1];
        bfs(1);
        for(int i = 1; i<n; i++) printf("%d ",floor1[i]);
        printf("%d
    ",floor1[n]);
        return 0;
    }
  • 相关阅读:
    Win32 DPAPI加密编程
    .NET环境下的DPAPI加密编程
    Windows加密API的功能分类
    Windows加密API的层次
    Windows加密服务架构
    简单H5单页面真机调试
    vue中使用动画vue-particles
    particular.js
    sublime快捷键
    判断内核
  • 原文地址:https://www.cnblogs.com/littlepear/p/5681819.html
Copyright © 2011-2022 走看看