ZBLOG

/** * Definition for a Node. * type Node struct { * Val int * Left *Node * Right *Node * Next *Node * } */ type Frame struct { level int node *Node } func connect(root *Node) *Node { if root == nil { ret...

代码中存在一个问题。在遍历每一层的节点时,我们需要将同一层的节点连接起来,而不是按照先左后右的顺序添加到队列中。

以下是修改后的代码:

type Frame struct {
    level int
    node  *Node
}

func connect(root *Node) *Node {
    if root == nil {
        return nil
    }

    queue := []*Frame{&Frame{0, root}}

    var prev *Node
    for len(queue) != 0 {
        curr := queue[0]
        queue = queue[1:]

        if prev != nil && prev.level == curr.level {
            prev.Next = curr.node
        }

        if curr.node.Left != nil {
            queue = append(queue, &Frame{curr.level + 1, curr.node.Left})
        }
        if curr.node.Right != nil {
            queue = append(queue, &Frame{curr.level + 1, curr.node.Right})
        }

        prev = curr.node
    }
    
    return root
}

此修改确保了同一层级的节点会被正确连接。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=4697

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?