zoukankan      html  css  js  c++  java
  • java poj 2255

           其实,虽然说之前看过数据结构,但是我对它那种编程实现方式理解得不够深刻,只能说思想理解了,但是具体的实现并不深刻,因为我没有学C++。今天,这次算是对数据结构的一次练习了。思想很快确定下来了,就是跟《数据结构》中说的一样,主要是用递归。但是对递归情况需要判定,如根只有左子树或者右子树怎么办,剩下最后一个字母的时候的判断。需要细心细心。

          我的卡壳的地方是因为 substring(int beginIndex, int endIndex) 这个函数,后面的endIndex:到指定的 endIndex-1处结束。我以为是恰到endindex,所以都减一了,悲剧。不多说,上代码~

    import java.io.BufferedInputStream;
    import java.util.Scanner;
    
    public class Main {
        
        public static void main(String args[]){
            
            Scanner cin = new Scanner(new BufferedInputStream(System.in));
            String pre;
            String in;
    
            while(cin.hasNext()){
                
                pre=cin.next();
                in=cin.next();
                String s= getPostOrder(pre, in);
                
                System.out.println(s);
                
            }
            
            
            
        }
        
        public static String getPostOrder(String pre,String in){
            
            
            if(pre.length()==1&&in.length()==1)
                return in;
            
            
            char head = pre.charAt(0);
            int n = in.indexOf(head);
            
            if(n==0){
                String in2= in.substring(1,in.length());
                String pre2 = pre.substring(1, pre.length());
                return getPostOrder(pre2, in2)+head;
            }
    
            if(n==(in.length()-1)){
                String in1 = in.substring(0, n);
                String pre1 = pre.substring(1, pre.length());
                return getPostOrder(pre1, in1)+head;
            }
            
            String in1 = in.substring(0, n);
            String in2= in.substring(n+1, in.length());
            
            String pre1 = pre.substring(1, in1.length()+1);
            String pre2 = pre.substring(in1.length()+1, pre.length());
            
            pre=getPostOrder(pre1, in1);
            in = getPostOrder(pre2, in2);
            
            String s = pre+in+head;
            
            return s;
            
        }
    
    }
    View Code
  • 相关阅读:
    final关键字
    多态
    java特性-封装
    super的使用
    ==和equals的区别
    面向对象的三大特征
    this和static的用法
    如何一步步使用国内yum源一键安装openstack-ocata版本基于centos7
    Zabbix 4.2 安装
    自动化运维神器-ansible
  • 原文地址:https://www.cnblogs.com/sasaxu/p/3347888.html
Copyright © 2011-2022 走看看