class Solution {
    public Node connect(Node root) {
        Node current = root;
        Node next = root == null ? null : root.left;

        while (current != null && next != null) {
            current.left.next = current.right;

            if (current.next != null) {
                current.right.next = current.next.left;
            }

            current = current.next;

            if (current == null) {
                current = next;
                next = current.left;
            }
        }

        return root;
    }
}