private void growDTNode(DecisionTreeNode node, int levelCount, int maxLevel) {
		if (levelCount >= maxLevel) {
			return;
		}
		if (questions == null || questions.isEmpty()) {
			throw new NullPointerException(
					"question list is empty or null at level " + levelCount);
		}
		int bestQuestionIndex = 0;
		double bestScore = 0, tempScore = 0;
		for (int i = 0; i < questions.size(); i++) {
			if (DtUtil.valInArray(node.getHistoryQuestionIds(), i)) {
				// asked question, move to next question
				continue;
			}
			System.out.println(i);
			tempScore = node.getMutalInformationForQuestion(i);
			if (tempScore > bestScore) {
				bestScore = tempScore;
				bestQuestionIndex = i;
			}
		}
		boolean growRst = node.growDT(bestQuestionIndex);
		if (growRst == false) { // grow not successful
			return;
		}
		growDTNode(node.getYesChild(), levelCount + 1, maxLevel);
		growDTNode(node.getNoChild(), levelCount + 1, maxLevel);
	}