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

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

golang binaryTree Preorder返回值不正確

golang binaryTree Preorder返回值不正確

Go
青春有我 2023-05-22 16:59:41
我想將所有節(jié)點(diǎn)的值作為一個(gè)數(shù)組返回,但是返回值是錯(cuò)誤的。type TreeNode struct {    Left  *TreeNode    Right *TreeNode    Val   int}type BinaryTree struct {    Root *TreeNode}    func PreorderRecursion(root *TreeNode, result []int) []int {    if root == nil {        return nil    }    result = append(result, root.Val)    res1 :=PreorderRecursion(root.Left,result)    res2 :=PreorderRecursion(root.Right,result)    result = append(result,res1...)    result = append(result,res2...)    return result}func TestBinaryTree_PreOrder(t *testing.T) {    tree := BinaryTree{}    tree.Root = &TreeNode{Val: 1}    tree.Root.Left = &TreeNode{Val: 2}    tree.Root.Right = &TreeNode{Val: 3}    tree.Root.Left.Left = &TreeNode{Val: 4}    var result []int    result =PreorderRecursion(tree.Root,result)    fmt.Println(result,"----")}正確的結(jié)果應(yīng)該是:1 2 4 3但我明白了:[1 1 2 1 2 4 1 3]
查看完整描述

2 回答

?
繁花不似錦

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

切片保存對(duì)底層數(shù)組的引用,如果將一個(gè)切片分配給另一個(gè)切片,則兩者都引用同一個(gè)數(shù)組。如果一個(gè)函數(shù)接受一個(gè)切片參數(shù),它對(duì)切片元素所做的更改將對(duì)調(diào)用者可見(jiàn)

PreorderRecursion不應(yīng)接受切片并對(duì)其進(jìn)行更改。這是一種方法。

func PreorderRecursion(root *TreeNode) []int {

? ? if root == nil {

? ? ? ? return nil

? ? }

? ? result := append([]int{}, root.Val)

? ? res1 := PreorderRecursion(root.Left)

? ? res2 := PreorderRecursion(root.Right)

? ? result = append(result, res1...)

? ? result = append(result, res2...)

? ? return result

}


查看完整回答
反對(duì) 回復(fù) 2023-05-22
?
幕布斯6054654

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

問(wèn)題源于您將result切片傳遞給遞歸調(diào)用。因此,每個(gè)遞歸調(diào)用都會(huì)附加上面節(jié)點(diǎn)的結(jié)果。你期望1 2 4 3,但是你1從第一個(gè)電話中得到,然后1 2(而不是只是2)從第二個(gè)電話中得到,然后1 2 4(而不是只是4)從第三個(gè)電話中得到。

要解決此問(wèn)題,您只需刪除將結(jié)果切片傳遞給遞歸函數(shù)即可。該函數(shù)應(yīng)該只為它所在的節(jié)點(diǎn)加上它的后代樹創(chuàng)建一個(gè)結(jié)果切片,它不需要知道父節(jié)點(diǎn)的結(jié)果是什么。


查看完整回答
反對(duì) 回復(fù) 2023-05-22
  • 2 回答
  • 0 關(guān)注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報(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)