Я пытаюсь найти узел в небиновом дереве без фактического прохождения узла к методу поиска.Рекурсивный поиск по дереву без объекта передачи
Каждый узел имеет переменную name
. Метод findChild()
принимает имя и выполняет поиск по дереву, в котором он был вызван, чтобы найти узел с этим именем.
Чтобы выполнить рекурсивный поиск, я вызываю findChild()
на дочернем узле, а не передавая дочерний узел методу findChild()
. Операторы печати показывают мне, что метод проходит через дерево, но переменная result
получает значение null, когда стек отключается, поэтому метод всегда возвращает значение null. Я понимаю, почему это делается, но я не понимаю, как отключить этот тип рекурсии. Любая помощь приветствуется!
Мой findChild()
метод:
public FileNode findChild(String name) {
FileNode result = null;
for (FileNode child : this.getChildren()) {
if (child.getName() == name) {
return child;
} else {
child.findChild(name);
}
}
return result;
}
Прежде всего, вы должны всегда использовать '.equals' для сравнения строк вместо' == '. '==' будет проверять, является ли тот же объект ссылкой, в то время как '.equals' проверяет, одинаковы ли строки. – Erik