代码中存在一个问题。在遍历每一层的节点时,我们需要将同一层的节点连接起来,而不是按照先左后右的顺序添加到队列中。
以下是修改后的代码:
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助手提供,问题来源于学员提问