2013-04-12 1 views
0

Я пишу программу генеалогического древа в Java, используя двоичное дерево. Метод ancestors вызывается из другого класса и вызывает findAncestors, чтобы запустить рекурсивно, чтобы добавить ВСЕ предков к выходной строке. Я добавил родительские указатели к моему дереву в надежде облегчить поиск всех предков.Добавление всех предков двоичного дерева в String в Java

Метод локации Я использую поиск дерева для переданной строки и возвращает узел, в котором он находится.

Проблема, с которой я в настоящее время сталкиваюсь, заключается в том, что метод возвращается только с прямым родителем вместо всех предков узла.

public String ancestors(String x) 
    { 
    String outputString = ""; 
    if (locate(x).parent!=null) 
     outputString = findAncestors(locate(x),outputString); 
    return outputString; 
    } 

    private String findAncestors(Node x,String outputString) 
    { 
    if(x.parent != null) 
     { 
      outputString = outputString + String.valueOf(x.parent.value); 
      findAncestors(x.parent,outputString); 
     } 
    return outputString; 
    } 

ответ

0

Вы не можете пропустить строку в качестве параметра изменения bcause, поскольку она неизменна. попробовать:

return findAncestors(x.parent,outputString); 

+0

Ба, ты прав! Я пропустил это, глядя мне прямо в лицо. Благодарю. – BigGrizzle

Смежные вопросы