public TreeNode creat( TextProcessing TextPro, String Situ, String ParName ) {
		TreeNode root = new TreeNode();
		InformationGain infoGain = new InformationGain();
		root.AttributeName = infoGain.getMaxGain(TextPro);
		root.SituationName = Situ;
		root.ParentName = ParName;
		root.isLeafNode = false;
		
		Attribute objAttr = null;
		for ( int i = 0; i < TextPro.objAttributeList.size(); i ++ ) {
			if ( TextPro.objAttributeList.get(i).AttributeName.equals(root.AttributeName) ) {
				objAttr = TextPro.objAttributeList.get(i);
				break;
			}
		}
		root.ChildCount = objAttr.SituationMap.size();
		for ( String SituName:objAttr.Situation_Count.keySet() ) {
			Situation objSitu = objAttr.SituationMap.get(SituName);
			if ( objSitu.Result_Count.size() == 1 ) {
				TreeNode leaf = new TreeNode();
				leaf.isLeafNode = true;
				leaf.AttributeName = findResult(SituName, root.AttributeName, TextPro);
				leaf.SituationName = SituName;
				leaf.ParentName = root.AttributeName;
				leaf.ChildCount = 0;
				leaf.ChildNodes = null;
				root.ChildNodes.put(SituName, leaf);
			}
			else {
				List<String> nextTextList = TextPro.getChildTable(root.AttributeName, objSitu.SituationName);
				TextProcessing nextTextPro = new TextProcessing();
				nextTextPro.readText(nextTextList);
				TreeNode ChildNode = creat(nextTextPro, objSitu.SituationName, root.AttributeName);
				root.ChildNodes.put(SituName, ChildNode);
			}
		}
		return root;
	}