zoukankan      html  css  js  c++  java
  • 【树的遍历】前序中序求后序,中序后序求前序

    1>求前序

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    using namespace std;
    string m,f; 
    int len,mid[30],front[30];
    int son[30][2],root;
    
    int fz(int l1,int r1,int l2,int r2)
    {
        if(l1>r1) return 0;
        if(l1==r1) return front[l1];
        int rt=front[l1];
        
        int pos;
        for(pos=l2;pos<r2;pos++)
            if(mid[pos]==rt) break;
        int ln=pos-l2;
        
        son[rt][0]=fz(l1+1,l1+ln, l2,l2+ln-1);
        son[rt][1]=fz(l1+ln+1,r1, l2+ln+1,r2);
        return rt;
    }
    void back(int rt)
    {
        if(son[rt][0]) back(son[rt][0]);
        if(son[rt][1]) back(son[rt][1]);
        printf("%c",'A'+rt-1);
    }
    
    int main()
    {
        cin>>m>>f;
        len=m.length() ;
        for(int i=0;i<len;i++)
            mid[i]=m[i]-'A'+1,front[i]=f[i]-'A'+1;
        
        root=fz(0,len-1,0,len-1);
        back(root);
                
        return 0;
    }

    2>求前序

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<string>
    using namespace std;
    string mid,back;
    int len,m[30],bac[30];
    int son[30][2],root;
    
    int fz(int l,int r,int l2,int r2)//bac,m
    {
        if(l>r) return 0;
        if(l==r) return bac[r];
        int rt=bac[r];
        
        int pos;
        for(pos=l2;pos<r2;pos++)
            if(m[pos]==rt) break;
        int ln=pos-l2-1;
        
        son[rt][0]=fz(l,l+ln, l2,l2+ln);
        son[rt][1]=fz(l+ln+1,r-1,l2+ln+2,r2);
        
        return rt;
    }
    void front(int rt)
    {
        printf("%c",rt+'A'-1);
        
        if(son[rt][0]>0) front(son[rt][0]);
        if(son[rt][1]>0) front(son[rt][1]);
    }
    
    int main()
    {
        cin>>mid>>back;
        len=mid.length() ;
        for(int i=0;i<len;i++)
            m[i]=mid[i]-'A'+1,bac[i]=back[i]-'A'+1;
        
        root=fz(0,len-1,0,len-1);
        front(root);
        
        return 0;
    }
  • 相关阅读:
    PetaPoco 基础操作
    Sql Server实现自动增长
    冒泡排序算法[C++]
    PHP 使用非对称加密算法(RSA)
    Linux的PHP开发环境快速搭建
    PHP常见漏洞攻击简述
    关于计算机编码的笔记
    简述面向对象编程原则和设计模式
    PHP错误处理注册机制
    规范数据库设计
  • 原文地址:https://www.cnblogs.com/xwww666666/p/11447685.html
Copyright © 2011-2022 走看看