AlgoMaster Logo

Populating Next Right Pointers in Each Node II

tree=[1, 2, 3, 4, 5, null, 7]
1public Node connect(Node root) {
2    if (root == null) {
3        return root;
4    }
5
6    Queue<Node> queue = new LinkedList<>();
7    queue.offer(root);
8    int level = 0;
9
10    while (!queue.isEmpty()) {
11        int levelSize = queue.size();
12
13        for (int i = 0; i < levelSize; i++) {
14            Node current = queue.poll();
15
16            // Connect to next node in level
17            if (i < levelSize - 1) {
18                current.next = queue.peek();
19            }
20
21            // Add children to queue
22            if (current.left != null) {
23                queue.offer(current.left);
24            }
25            if (current.right != null) {
26                queue.offer(current.right);
27            }
28        }
29
30        level++;
31    }
32
33    return root;
34}
0 / 22
R123457Level 0Level 1Level 2