private void buildForStringFeature(TeaClassifier tc, TeaNode parent, String[] valueCombo, int level, List<Integer> usedAttributes, double sugar, String val, int index) {
		String[] newValueCombo = new String[2];
		newValueCombo[0] = valueCombo[0];
		newValueCombo[1] = valueCombo[1];
		List<Integer> newUsed = new ArrayList<>();
		newUsed.addAll(usedAttributes);
		newValueCombo[index] = val;
		newUsed.add(index);
		ArrayList<Tea> list = tc.getTeasWithValueS(newValueCombo, sugar);
		int positive = 0;
		for (Tea t : list) {
			if (t.isDrinkable()) {
				positive++;
			}
		}
		if (list.isEmpty()) {
			return;
		}
		double percentGood = (double) positive / (double) list.size();
		if (newUsed.size() == 3) {
			addLeaf(list, positive, parent, val, newValueCombo, sugar);
		} else {
			TeaNode child = new TeaNode();
			child.level = level + 1;
			child.setLabel(val);
			child.setIdString(parent.getIdString() + child.getLabel());
			child.positive = positive;
			child.negative = list.size() - positive;
			child.valuesCombination[0] = newValueCombo[0];
			child.valuesCombination[2] = newValueCombo[1];
			child.valuesCombination[1] = sugar + "";
			if (percentGood == 1.0) {
				addLeaf(list, positive, parent, val, newValueCombo, sugar);
			} else if (percentGood == 0.0) {
				addLeaf(list, positive, parent, val, newValueCombo, sugar);
			} else {
				double bestGain = 0.0;
				int bestAttr = 0;
				//0 - tea type, 1 - sugar, 2 - add
				for (int i = 0; i < 3; i++) {
					double tmpGain = tc.gainRatio(i);
					if (tmpGain > bestGain
							&& !newUsed.contains(i)) {
						bestAttr = i;
						bestGain = tmpGain;
					}
				}
				child.setAttribute(bestAttr);
				buildTree(tc, child, newValueCombo, level + 1, newUsed, sugar);
				parent.addChild(child);
			}
			
		}
	}