/**
* Definition for binary tree with next pointer.
* public class TreeLinkNode {
* int val;
* TreeLinkNode left, right, next;
* TreeLinkNode(int x) { val = x; }
* }
*/
/*
1 -> NULL
/ \
2 -> 3 -> NULL
\ / \
4->5 ->7 -> NULL
1
/ \
2 3
/ \ \
4 5 7
/ \ / \
8 9 10 11
*/
public class Solution {
public void connect(TreeLinkNode root) {
TreeLinkNode frontier = root;
while(frontier != null) {
TreeLinkNode cur = frontier; //current node of current level
TreeLinkNode head = null; //head of the next level
TreeLinkNode prev = null; //the leading node on the next level
while(cur != null) {
if(cur.left != null) {
if(prev != null) {
prev.next = cur.left;
} else {
head = cur.left;
}
prev = cur.left;
}
if(cur.right != null) {
if (prev != null) {
prev.next = cur.right;
} else {
head = cur.right;
}
prev = cur.right;
}
cur = cur.next;
}
frontier = head;
}
}
}