Код: Выделить всё
public class TreeNode {
public String nodeName;
public List clildren = new ArrayList();
TreeNode(String[] splittedTemplate) {
splittedTemplate[0] = splittedTemplate[0].replaceFirst("\\(", "");
splittedTemplate[splittedTemplate.length-1] = splittedTemplate[splittedTemplate.length-1].replaceFirst("\\)", "");
nodeName = splittedTemplate[0];
splittedTemplate[splittedTemplate.length-1] = splittedTemplate[splittedTemplate.length-1];
boolean subArrayStarted = false;
int subArrayStartPosition = -1;
int openBracketsCount = 0;
int closeBracketCount = 0;
String subArray = "";
for(int i = 1; i < splittedTemplate.length; i++) {
if(splittedTemplate[i].contains("(")) {
subArrayStarted = true;
if(subArrayStartPosition == -1) {
subArrayStartPosition = i;
}
openBracketsCount += Utils.getCountNumbersInStr('(', splittedTemplate[i]);
}
if(subArrayStarted) {
if(subArrayStartPosition == i) {
subArray += splittedTemplate[i];
} else {
subArray += "," + splittedTemplate[i];
}
} else {
clildren.add(new TreeNode(new String[]{splittedTemplate[i]}));
}
if(splittedTemplate[i].contains(")")) {
closeBracketCount += Utils.getCountNumbersInStr(')', splittedTemplate[i]);
if(openBracketsCount == closeBracketCount) {
clildren.add(new TreeNode(subArray.split(",")));
subArrayStarted = false;
subArrayStartPosition = -1;
subArray = "";
closeBracketCount = 0;
openBracketsCount = 0;
}
}
}
}
public void toStringNode(int tabs) {
String resultString = "";
int stringLength = 0;
for(TreeNode val: clildren) {
stringLength += val.getStringLength();
}
stringLength -= nodeName.length();
resultString += Utils.copySpace(stringLength/2) + nodeName + Utils.copySpace(stringLength/2);
if(tabs == 1) {
System.out.println(resultString);
}
}
public int getStringLength() {
if(this.clildren.size() == 0) {
return this.nodeName.length()+2;
}
int stringLength = 0;
for(TreeNode val: clildren) {
stringLength += val.getStringLength();
}
return stringLength;
}
}
String[] SplitTemplate. Конструктор класса превращает этот массив в дерево префиксов. Я застрял на этапе вывода этого дерева префиксов на консоль в виде дерева.
Метод toStringNode должен вывести дерево на консоль.
Мне нужно отобразить дерево в таком формате:

Я поэкспериментировал с кодом и получилось отобразить дерево в таком виде:
[img]https://i.sstatic. net/JVJvXk2C.png[/img]
Для другого дерева (a, b, (c, d, (e, f), g, (1, 2, (3, 4) )), 5):

Но это не то, что мне нужно
Подробнее здесь: https://stackoverflow.com/questions/784 ... he-console
Мобильная версия