zoukankan      html  css  js  c++  java
  • UVA-536 Tree Recovery (二叉树遍历)

    题目大意:给出对一棵二叉树先序遍历和中序遍历的顺序,找出后序遍历的顺序。

    题目分析:无非就是对字符串的输出顺序做个变化,递归就行了。

    代码如下:

    # include<iostream>
    # include<cstdio>
    # include<string>
    # include<cstring>
    # include<algorithm>
    using namespace std;
    
    string p,q;
    int pos[26];
    
    void f(int l1,int r1,int u,int l2,int r2)
    {
        if(l1<r1){
            int minn=100,nu;
            for(int i=l1;i<=r1;++i){
                if(minn>pos[i]){
                    minn=pos[i];
                    nu=i;
                }
            }
            f(l1,nu-1,nu,nu+1,r1);
        }
        if(l1==r1)
            printf("%c",q[l1]);
        if(l2<r2){
            int minn=100,nu;
            for(int i=l2;i<=r2;++i){
                if(minn>pos[i]){
                    minn=pos[i];
                    nu=i;
                }
            }
            f(l2,nu-1,nu,nu+1,r2);
        }
        if(l2==r2)
            printf("%c",q[l2]);
        printf("%c",q[u]);
    }
    
    int main()
    {
        while(cin>>p>>q)
        {
            int l=p.size();
            for(int i=0;i<l;++i){
                for(int j=0;j<l;++j)
                    if(q[i]==p[j]){
                        pos[i]=j;
                        break;
                    }
            }
            int u;
            for(int i=0;i<l;++i)
                if(p[0]==q[i]){
                    u=i;
                    break;
                }
            f(0,u-1,u,u+1,l-1);
            printf("
    ");
        }
        return 0;
    }
    

      

  • 相关阅读:
    android 学习
    android 学习
    android 学习
    android 学习
    android 学习
    android 学习
    android 学习
    android 学习
    android 学习
    每日日报
  • 原文地址:https://www.cnblogs.com/20143605--pcx/p/4858050.html
Copyright © 2011-2022 走看看