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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go 樹遍歷,試圖理解代碼

Go 樹遍歷,試圖理解代碼

Go
慕斯王 2021-08-10 15:58:40
我正在 Rosettacode.org 上查看有關(guān)樹遍歷的頁(yè)面。我正在研究 Go 的實(shí)現(xiàn),我對(duì) Go 還很陌生,這就是為什么我需要你的幫助。在文件的開頭,創(chuàng)建了一個(gè)結(jié)構(gòu)。沒關(guān)系,到目前為止它是有道理的。但我不明白的是:type node struct {    value       int    left, right *node}的left, right *node一部分。我知道左、右變量是指向節(jié)點(diǎn)的指針類型。但我不明白為什么,首先我不知道你可以包含你正在創(chuàng)建的類型,在這種情況下是實(shí)際結(jié)構(gòu)本身中的節(jié)點(diǎn)。然后我真的不明白為什么代碼不只是說(shuō)left, right node.func (n *node) iterPreorder(visit func(int)) {    if n == nil {        return    }    visit(n.value)    n.left.iterPreorder(visit)    n.right.iterPreorder(visit)}我不明白的下一件事是,visit變量的類型如何func(int)。然后我也不知道如何iterPreorder在函數(shù)中使用iterPreorder。最后我想問一下,這段代碼有什么作用?tree := &node{1,    &node{2,        &node{4,            &node{7, nil, nil},            nil},        &node{5, nil, nil}},    &node{3,        &node{6,            &node{8, nil, nil},            &node{9, nil, nil}},        nil}}
查看完整描述

1 回答

?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

讓我們一步一步來(lái)。

  1. 它使用指針,因?yàn)?left 和/或 right 可以是 nil (根本沒有設(shè)置),你不能有一個(gè)值。此外,如果他們使用,left, right node您將擁有無(wú)限數(shù)量的節(jié)點(diǎn),因?yàn)樵撝祵⑹冀K被設(shè)置。

  2. visit func(int)允許您傳遞類型為 的函數(shù)func(int),例如其他語(yǔ)言中的回調(diào)。

  3. n.left.iterPreordern.right.iterPreorder,您實(shí)際上是在調(diào)用iterPreorder子節(jié)點(diǎn),而不是調(diào)用它的同一個(gè)節(jié)點(diǎn)。

  4. 該代碼只是創(chuàng)建一棵樹并為其分配節(jié)點(diǎn)。

為了更好地可視化:

tree := &node{1,

    &node{2,

        &node{4,

            &node{7, nil, nil},

            nil},

        &node{5, nil, nil}},

    &node{3,

        &node{6,

            &node{8, nil, nil},

            &node{9, nil, nil}},

        nil}}

是相同的:


tree = &node{value: 1}

tree.left = &node{value:2}

tree.left.left = &node{value: 4}

tree.left.left.left = &node{value: 7}

tree.left.right = &node{value: 5}


tree.right = &node{value:3}

tree.right.left = &node{value: 6}

tree.right.left.left = &node{value: 8}

tree.right.left.right = &node{value: 9}

獎(jiǎng)金:


使用&返回一個(gè)指針,例如n := &node{},n是一個(gè)指向節(jié)點(diǎn)的指針。

檢查此有關(guān)圍棋的指針優(yōu)秀文章。


也必須閱讀Effective Go,并嘗試通過游覽


查看完整回答
反對(duì) 回復(fù) 2021-08-10
  • 1 回答
  • 0 關(guān)注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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