Since it's a full binary tree, our job is much simpler, at each node, connects its left and right child, and try to connect the right child with the left child of node's next. A simple preorder traversal should be able to help us solve this problem.

```
/**
* @param {TreeLinkNode} root
* @return {void} Do not return anything, modify tree in-place instead.
*/
var connect = function(root) {
if (!root || !root.left) { // sanity check
return;
}
root.left.next = root.right; // connect left -> right
root.right.next = root.next ? root.next.left : null; // connect right -> next's left
connect(root.left);
connect(root.right);
};
```

Time complexity: `O(n)`

Space complexity: `O(1)`