Populating Next Right Pointers in Each Node II
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}Example
1
/ \
2 3
/ \ \
4 5 7Note
Code
Last updated
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
} 1
/ \
2 3
/ \ \
4 5 7Last updated
1 -> NULL
/ \
2 -> 3 -> NULL
/ \ \
4-> 5 -> 7 -> NULLpublic void connect(TreeLinkNode root) {
TreeLinkNode cur = root;
TreeLinkNode pre = null;
TreeLinkNode head = null;
while (cur != null) {
while (cur != null) {
if (cur.left != null) {
if (pre != null) {
pre.next = cur.left;
} else
head = cur.left;
pre = cur.left;
}
if (cur.right != null) {
if (pre != null) {
pre.next = cur.right;
} else
head = cur.right;
pre = cur.right;
}
cur = cur.next;
}
cur = head;
pre = null;
head = null;
}
}