我在旅行中遇到了等效二叉樹練習的問題。我編寫了一個 Walker() 函數(shù)以按節(jié)點-左右順序遍歷樹,然后使用 Same() 函數(shù)測試兩個相同的二叉樹是否等價。這是我的代碼的鏈接:https ://go.dev/play/p/vakNgx_CD3L請參閱鏈接的代碼中的評論。出于某種原因,使用這種遍歷順序,等價性測試在應該工作時失敗了。不過,將順序切換為左節(jié)點右或右節(jié)點左是可行的。打印輸出也讓我感到困惑。這是運行時的結(jié)果。為什么遍歷樹 1 的前 10 個數(shù)字與遍歷樹 2 的第二組 10 個數(shù)字不匹配?1053124769874213569810falsefalse
1 回答

Qyouu
TA貢獻1786條經(jīng)驗 獲得超11個贊
我認為這里的問題是,您正在使用https://pkg.go.dev/golang.org/x/tour/tree#New函數(shù),它返回一個從 1k 到 10k 值的隨機二叉樹。
tree.New(1)
“隨機”一詞在這里很重要,因此您不能期望獲得與函數(shù)調(diào)用輸出相同的二叉樹。
盡管樹節(jié)點的值從 1 到 10(在 k=1 的情況下),但返回的樹的順序?qū)⒉煌H绻褂?code>.String()函數(shù)打印樹,您可以清楚地看到這一點。看看下面的游樂場代碼,我在其中打印了樹,它清楚地表明每次調(diào)用tree.New
函數(shù)時返回的樹都是不同的。 https://go.dev/play/p/WkF8frfno17
我希望這有幫助 :)。
- 1 回答
- 0 關(guān)注
- 125 瀏覽
添加回答
舉報
0/150
提交
取消