天天看点

PTA 重建二叉树 java

题目链接:https://pintia.cn/problem-sets/1120858298571182080/problems/1120858729171013632

package pat树;
//ac
import java.util.Scanner;

	public class Main87重建二叉树 {
	    static String a;
	    static String b;
	    static node root;
	    static int n;
	    public static node build(int pl,int pr,int il,int ir) {
	    	if(il>ir)return null;
	    	node jiedian=new node();
	    	char v=a.charAt(pl);
	    	jiedian.v=v;
	    	int i;
	    	for(i=0;i<=n;i++)if(b.charAt(i)==v)break;
	    	int num=i-il;
	    	jiedian.le=build(pl+1,pl+num,il,i-1);
	    	jiedian.ri=build(pl+num+1,pr,i+1,ir);
	    	return jiedian;
	    }
	    public static void print(node root) {
	    	if(root!=null) {
	    		print(root.le);
	    		print(root.ri);
	    		System.out.print(root.v);
	    	}
	    }
		public static void main(String[] args) {
			Scanner in=new Scanner(System.in);
			while(in.hasNext()) {
				a=in.next();
				if(a.equals("EOF"))break;
				b=in.next();
				n=a.length()-1;
				root=build(0,n,0,n);
				print(root);
				System.out.println();
			}

		}

	}
	class node{
		char v;
		node le;
		node ri;
	}