我正在編寫一個返回二叉樹節(jié)點值的垂直順序遍歷的函數(shù)。(即,從上到下,逐列)。這是預(yù)期輸入和輸出的示例:Input: [3,9,8,4,0,1,7,null,null,null,2,5] (0's right child is 2 and 1's left child is 5) 3 /\ / \ 9 8 /\ /\ / \/ \ 4 01 7 /\ / \ 5 2Output:[ [4], [9,5], [3,0,1], [8,2], [7]]我的函數(shù)按預(yù)期輸出所有內(nèi)容,除了[8,2]——我得到的[2,8]是:[[4] [9 5] [3 0 1] [2 8] [7]]這是我的函數(shù)的樣子:func verticalOrder(root *TreeNode) [][]int { if root == nil { return [][]int{} } var ( hd int m map[int][]int vals [][]int min int max int traverse func(t *TreeNode, hd int, m map[int][]int) ) m = make(map[int][]int) min = 0 max = 0 traverse = func(t *TreeNode, hd int, m map[int][]int) { if t == nil { return } m[hd] = append(m[hd], t.Val) if max < hd { max = hd } if min > hd { min = hd } traverse(t.Left, hd-1, m) traverse(t.Right, hd+1, m) } traverse(root, hd, m) for i := min; i <= max; i++ { vals = append(vals, m[i]) } return vals}本質(zhì)上,我使用散列映射來跟蹤具有相同水平距離的節(jié)點,并將它們附加到數(shù)組中。我想弄清楚的是我的輸出如何與9and 一起正常工作5而不與8and一起工作2?非常感謝任何反饋!
Go 中不一致的追加行為?
HUH函數(shù)
2023-06-05 18:00:27