1 回答

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
看起來(lái)您想返回是否在樹(shù)的任何節(jié)點(diǎn)中找到了 ID。您的代碼幾乎就在那里,但您需要檢查遞歸調(diào)用是否找到它。使用return而不是break使代碼更簡(jiǎn)單。
我刪除了這些print語(yǔ)句,我猜它們是出于調(diào)試目的。
我還用 a 替換了返回值bool(原始代碼要么返回 ID 本身,要么返回 0 表示未找到),并刪除了j.Children == nil測(cè)試(代碼為空切片返回 false:
// ValidateID reports whether id exists in a tree of nodes.
func ValidateID(id int, tn []Node) bool {
for _, j := range tn {
if id == j.ID || ValidateID(id, j.Children) {
return true
}
}
return false
}
請(qǐng)注意,如果您想從目標(biāo)節(jié)點(diǎn)實(shí)際返回 bool 以外的內(nèi)容,我會(huì)讓函數(shù)返回兩個(gè)值:您感興趣的值和表示是否找到 ID 的 bool。"Effective Go"不鼓勵(lì)依賴(lài)像 0 這樣的標(biāo)記值。
- 1 回答
- 0 關(guān)注
- 122 瀏覽
添加回答
舉報(bào)