九度論壇-1009

/**
 * 文件名: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;
	}

}
相關文章
相關標籤/搜索