Я пытаюсь создать код из ArrayList of Nodes для создания древовидной структуры для разбора и печати филогенетических деревьев.При синтаксическом анализе с использованием этой рекурсивной функции кажется, что некоторые элементы не учитываются и не вставляются туда, где они должны быть.
{
public void buildTree(ArrayList<Node> T) {
for(int i = 0; i < T.size()-1; i++) {
for( int j = i+1; j < T.size()-1; j++) {
while(j < T.size() && T.get(j).name.startsWith(T.get(i).name)) {
T.get(i).children.add(T.get(j));
T.remove(j);
Collections.sort(T.get(i).children, NAME);
buildTree(T.get(i).children);
}
}
}
}
}
Этот код принимает список узлов, сравнивает каждый узел друг с другомузел и добавляет его в свою ветвь, если его потомок (сравнение String.startsWith ()).Я должен был увидеть этот результат:
{
*
|-AAAAGAC
| |-AAAAGACTGG
|-AAAATC
|-AAATA
|-AAATCGA
|-AAATT
| |-AAATTAAG
| |-AAATTC
| | |-AAATTCAAC
| | | |-AAATTCAACA
| | | |-AAATTCAACG
| | | |-AAATTCAACT
| | | | |-AAATTCAACTA
| | | | |-AAATTCAACTT
| | |-AAATTCCGA
}
Но вместо этого я продолжаю получать это:
{
*
|-AAAAGAC
| |-AAAAGACTGG
|-AAAATC
|-AAATA
|-AAATCGA
|-AAATT
| |-AAATTAAG
| |-AAATTC
| | |-AAATTCAAC
| | | |-AAATTCAACA
| | | |-AAATTCAACG
| | | |-AAATTCAACT
| | | |-AAATTCAACTA <<<<<<<<< Needs one more indent.
| | | | |-AAATTCAACTT
| |-AAATTCCGA <<<<<<<<< Needs one more indent.
}
Почему код дает слишком мало отступов?