第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 中不一致的追加行為?

Go 中不一致的追加行為?

Go
HUH函數(shù) 2023-06-05 18:00:27
我正在編寫一個返回二叉樹節(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?非常感謝任何反饋!
查看完整描述

1 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗 獲得超8個贊

我沒有任何關(guān)系append

您正在對二叉樹進(jìn)行 DFS 遍歷,該順序稱為該樹的 DFS 順序。問題是樹的 DFS 順序不是從上到下。

您的代碼2在 node 之前訪問 node 8,因此代碼m[hd] = append(m[hd], t.Val)代替. 沒有什么不一致的。[2 8][8 2]

要解決這個問題,您可以使用 BFS 來遍歷樹,或者,您可以將深度信息保存到其中mm[hd]相應(yīng)地對每個信息進(jìn)行排序。

一般來說,BFS 是一個更好的主意,但排序很快就可以破解。


查看完整回答
反對 回復(fù) 2023-06-05
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號