我试图搜索非二叉树中的一个节点,而没有实际将节点传递给搜索方法。通过树进行递归搜索而不通过对象
每个节点都有一个name
变量。 findChild()
方法采用一个名称,并搜索所调用的树来查找具有该名称的节点。
要进行递归搜索,我在子节点上调用findChild()
,而不是将子节点传递给findChild()
方法。打印语句显示该方法在树中下移,但当堆栈展开时result
变量被设置为空,因此该方法始终返回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