This is definitely medium, not hard. Took me about 5 minutes, and some medium problems took me a few hours! Since you have to walk the tree in BFS order and you're given extra references to help you do just that, it's intuitive, it's simple and it's fast. The first level (root) is connected already, so you connect the next level and then you just walk through the linked list you've just created and so on.

```
public void connect(TreeLinkNode root) {
for (TreeLinkNode head = root; head != null; ) {
TreeLinkNode nextHead = new TreeLinkNode(0), nextTail = nextHead;
for (TreeLinkNode node = head; node != null; node = node.next) {
if (node.left != null) {
nextTail.next = node.left;
nextTail = node.left;
}
if (node.right != null) {
nextTail.next = node.right;
nextTail = node.right;
}
}
head = nextHead.next;
}
}
```