我的任务是查找并返回由字符串targetName
给出的一般树中的特定节点。快来看看下面我的实现:Java:我的一般树遍历实现有什么不正确?
public GeneralTreeNode findNode(String targetName) {
if (this.name.equals(targetName)) {
return this;
} else {
for (GeneralTreeNode child : this.children) {
return child.findNode(targetName);
}
}
// no node containing the string could be found
return null;
}
唯一的问题是,这往往似乎错误地返回空值时,实际上是一个节点确实存在。就好像最后一行return null
太贪婪了。
在这个问题上找到几个断点并观察它,结果表明它似乎只能下到最低深度,直到一个节点没有子节点,在这种情况下它只是返回null。
任何人都可以提供有关如何改善此问题的建议吗?
您需要检查findNode的返回值,并且只有在* not * null时才返回。 –