zoukankan      html  css  js  c++  java
  • [patl2-011]玩转二叉树

    解题关键:数据结构课本上的裸题。

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    using namespace std;
    struct mm{int l,r;}tr[1000];
    int arr[1000];
    int brr[100];
    queue<int>que;
    int build(int la,int ra,int lb,int rb){
        if(la>ra) return 0;
        int root=brr[lb];
        int p=la;
        while(arr[p]!=root) p++;
        int cnt=p-la;
        tr[root].l=build(la,p-1,lb+1,lb+cnt);
        tr[root].r=build(p+1,ra,lb+cnt+1,rb);
        return root;
    }
    void revers(int root){
        if(root){
            swap(tr[root].l,tr[root].r);
            revers(tr[root].l);
            revers(tr[root].r);
       }
    }
    int flag;
    void bfs(){
        int root=brr[0];
        que.push(root);
        while(!que.empty()){
            int t=que.front();
            que.pop();
            if(flag==1){
                printf(" %d",t);}
            else{
                printf("%d",t);flag=1;
            }
            if(tr[t].l) que.push(tr[t].l);
            if(tr[t].r) que.push(tr[t].r);
        }
    }
    int main(){
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",arr+i);
        }
        for(int i=0;i<n;i++){
            scanf("%d",brr+i);
        }
        build(0,n-1,0,n-1);
        revers(brr[0]);
        bfs();
    }
  • 相关阅读:
    linux中~和/的区别
    Linux centos 7安装
    xshell远程连接虚拟机
    虚拟机Linux不能上网简单有效的解决办法
    visudo
    users
    TreeSizeFree(硬盘文件整理)
    dos2unix
    iconv
    PS1系统变量
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/8788065.html
Copyright © 2011-2022 走看看