У меня есть двоичное дерево, созданное с помощью следующего конструктора:
public Person(String name, int age, char gender, Person c1, Person c2)
, где c1 - левый дочерний элемент, а c2 - правый дочерний.
Я хочу написать метод, который ищетдля определенного имени в пределах максимального поколения.Например, a.depthFirstSearch(Eva, 1);
, где Ева - это имя для поиска, а 1 - максимальное количество поколений (или уровней), на которое я могу посмотреть.
Вот что у меня есть: РЕДАКТИРОВАТЬ:
public Person depthFirstSearch(String name, int maxGeneration)
{
{
Person temp;
if (maxGeneration>1){
if (this.name.equals(name)){
temp=this;
return temp;
}
else{
if (child1!=null)
temp=child1.depthFirstSearch(name, maxGeneration-1);
if (child2!=null)
temp=child1.depthFirstSearch(name, maxGeneration-1);
}
}
return null;
}
}
Здесь есть две проблемы.Я думаю, что глубина сбрасывается в 0 каждый раз, когда функция вызывает себя, поэтому я знаю, что могу либо отслеживать глубину в другом месте, либо найти альтернативу.Другая проблема, я думаю, в том, что child2 никогда не достигается, так как я возвращаюсь в child1.Я не совсем уверен, как это работает, так что если бы кто-то мог это объяснить, это было бы здорово.Какие-нибудь предложения для некоторых исправлений?
Кроме того, мне сказали, что я должен сначала искать глубину, то есть сначала заглядывать в более глубокие поколения.Я не совсем уверен, что это значит и насколько он отличается от логики, которую я использую в своей реализации.