/** * 文件名:Main.java * * 版本信息: * 日期:2013-6-28 * Copyright Corporation 2013 * 版權全部 * */ package 題目1009; import java.util.Scanner; /** * * 項目名稱:arithmetic * 類名稱:Main * 類描述: * 建立人:黃傳聰 * 建立時間:2013-6-28 下午2:27:53 * 修改人:黃傳聰 * 修改時間:2013-6-28 下午2:27:53 * 修改備註: * @version * */ public class Main { private int data; private Main lchild; private Main rchild; public Main(){} public Main(int data,Main lchild,Main rchild){ this.data = data; this.lchild = lchild; this.rchild = rchild; } private static String s1 = ""; private static String tempStr = ""; public static void main(String[] args) { // TODO Auto-generated method stub Main root = null; Scanner scanner = new Scanner(System.in); int n ; while(scanner.hasNext()){ n = Integer.parseInt(scanner.nextLine()); if(n == 0){ break; } int[] f = new int[11]; int i ,j; String str = scanner.nextLine(); Main node = null; root = new Main(Integer.parseInt(String.valueOf(str.charAt(0))),null,null); for(i=1;i<str.length();i++){ node = new Main(Integer.parseInt(String.valueOf(str.charAt(i))),null,null); insertTree(root,node); } String s = postOrder(root); s1 = ""; for(i=0;i<n;i++){ String tempStr = scanner.nextLine(); Main tempRoot = new Main(Integer.parseInt(String.valueOf(tempStr.charAt(0))),null,null); for(j=1;j<str.length();j++){ node = new Main(Integer.parseInt(String.valueOf(tempStr.charAt(j))),null,null); insertTree(tempRoot,node); } String tempS = postOrder(tempRoot); if(tempS.equals(s)){ System.out.println("YES"); }else{ System.out.println("NO"); } s1 = ""; } } } // 前序生成二叉排序樹 public static void insertTree(Main root, Main node){ if(node.data<root.data){ if(root.lchild == null){ root.lchild = node; }else{ insertTree(root.lchild,node); } }else if(node.data>root.data){ if(root.rchild == null){ root.rchild = node; }else{ insertTree(root.rchild, node); } } } public static String postOrder(Main root){ if(root != null){ postOrder(root.lchild); postOrder(root.rchild); s1 += root.data; } return s1; } }