我試圖搜索非二叉樹中的一個節點,而沒有實際將節點傳遞給搜索方法。通過樹進行遞歸搜索而不通過對象
每個節點都有一個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