我在旅行中遇到了等效二叉樹練習的問題。我編寫了一個 Walker() 函數以按節點-左右順序遍歷樹,然后使用 Same() 函數測試兩個相同的二叉樹是否等價。這是我的代碼的鏈接:https ://go.dev/play/p/vakNgx_CD3L請參閱鏈接的代碼中的評論。出于某種原因,使用這種遍歷順序,等價性測試在應該工作時失敗了。不過,將順序切換為左節點右或右節點左是可行的。打印輸出也讓我感到困惑。這是運行時的結果。為什么遍歷樹 1 的前 10 個數字與遍歷樹 2 的第二組 10 個數字不匹配?1053124769874213569810falsefalse
1 回答
Qyouu
TA貢獻1786條經驗 獲得超11個贊
我認為這里的問題是,您正在使用https://pkg.go.dev/golang.org/x/tour/tree#New函數,它返回一個從 1k 到 10k 值的隨機二叉樹。
tree.New(1)“隨機”一詞在這里很重要,因此您不能期望獲得與函數調用輸出相同的二叉樹。
盡管樹節點的值從 1 到 10(在 k=1 的情況下),但返回的樹的順序將不同。如果您使用.String()函數打印樹,您可以清楚地看到這一點??纯聪旅娴挠螛穲龃a,我在其中打印了樹,它清楚地表明每次調用tree.New函數時返回的樹都是不同的。 https://go.dev/play/p/WkF8frfno17
我希望這有幫助 :)。
- 1 回答
- 0 關注
- 139 瀏覽
添加回答
舉報
0/150
提交
取消
