У меня есть двоичное дерево, состоящее из различных узлов. Я хочу пересечь дерево, используя предварительную рекурсию, найти узел с соответствующим описанием (desc) и вернуть его, если он существует. Однако обход продолжается до завершения. Есть ли логическая ошибка, которую я делаю, или алгоритм обхода не подходит?Выйти из двоичного предварительного обхода порядка до завершения
Вот порядок обхода функции предварительного recusion и где я называю это ниже:
public Node replaceNodes(Node currentNode, int itemId, String desc) {
if (currentNode == null) {
System.out.println("null");
}
if (currentNode != null) {
//System.out.println(desc + " " + currentNode.getDesc());
if (currentNode.getDesc().matches(desc)
&& currentNode.getKey() != itemId) {
System.out.println("returned");
return currentNode;
//System.out.println(currentNode.getDesc());
} else {
replaceNodes(currentNode.leftChild, itemId, desc);
replaceNodes(currentNode.rightChild, itemId, desc);
//System.out.println("replace");
}
}
return null;
}
Node replaceItem = r1Items.replaceNodes(r1Items.
getRoot(), searchId, searchNode.getDesc());
//check suitable item found
Спасибо. Я с удовольствием уточню, если потребуется.
При вызове метода рекурсивного вы должны проверить результат извлеченного вашими рекурсивных вызовов ('ReplaceNodes (currentNode.leftChild, ...' и ' rightChild'), если результат для левого поиска «null» продолжается с правильным поиском и возвращает результат правильного поиска. Если результат поиска слева не является «null», верните его. – tomse