У меня есть бинарное дерево, состоящее из различных узлов. Я хочу пройти по дереву, используя рекурсию предварительного порядка, найти узел с подходящим описанием (описание) и вернуть его, если он существует. Однако обход продолжает завершаться. Есть ли логическая ошибка, которую я делаю, или алгоритм обхода не подходит?
Вот функция отказа от обхода предварительного заказа, и я вызываю ее ниже:
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
, верните его. - person tomse   schedule 24.03.2015