diff --git a/go/0116-populating-next-right-pointers-in-each-node.go b/go/0116-populating-next-right-pointers-in-each-node.go new file mode 100644 index 000000000..7ba80d37e --- /dev/null +++ b/go/0116-populating-next-right-pointers-in-each-node.go @@ -0,0 +1,30 @@ +/** + * Definition for a Node. + * type Node struct { + * Val int + * Left *Node + * Right *Node + * Next *Node + * } + */ + +func connect(root *Node) *Node { + populate(root) + return root +} + +func populate(node *Node) { + if node == nil { + return + } + if node.Left == nil { + return + } + + node.Left.Next = node.Right + if node.Next != nil { + node.Right.Next = node.Next.Left + } + populate(node.Left) + populate(node.Right) +}