我正在使用二叉树在 Java 中编写一个家谱程序。从另一个类调用祖先方法并调用 findAncestors 以递归方式运行以将所有祖先附加到输出字符串。我向我的树添加了父指针,希望能够更轻松地找到所有祖先。
我使用的 locate 方法在树中搜索传递的字符串并返回它所在的节点。
我目前遇到的问题是该方法仅返回直接父节点而不是节点的所有祖先。
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;
}