Skip to content

Commit 3f0d0b1

Browse files
populating next right pointers in each node II
1 parent 5f55afa commit 3f0d0b1

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

Common/src/classes/TreeLinkNode.java

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package classes;
2+
3+
/**
4+
* Created by fishercoder1534 on 10/5/16.
5+
*/
6+
public class TreeLinkNode {
7+
public int val;
8+
public TreeLinkNode left, right, next;
9+
public TreeLinkNode(int x) { val = x;}
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package hard;
2+
import classes.TreeLinkNode;
3+
/**
4+
* Created by fishercoder1534 on 10/5/16.
5+
*/
6+
public class PopulatingNextRightPointersinEachNodeII {
7+
//copied this post: https://discuss.leetcode.com/topic/1106/o-1-space-o-n-complexity-iterative-solution
8+
//very clever and concise to make it in O(1) space
9+
10+
//based on level order traversal
11+
public static void connect(TreeLinkNode root) {
12+
13+
TreeLinkNode head = null; //head of the next level
14+
TreeLinkNode prev = null; //the leading node on the next level
15+
TreeLinkNode cur = root; //current node of current level
16+
17+
while (cur != null) {
18+
19+
while (cur != null) { //iterate on the current level
20+
//left child
21+
if (cur.left != null) {
22+
if (prev != null) {
23+
prev.next = cur.left;
24+
} else {
25+
head = cur.left;
26+
}
27+
prev = cur.left;
28+
}
29+
//right child
30+
if (cur.right != null) {
31+
if (prev != null) {
32+
prev.next = cur.right;
33+
} else {
34+
head = cur.right;
35+
}
36+
prev = cur.right;
37+
}
38+
//move to next node
39+
cur = cur.next;
40+
}
41+
42+
//move to next level
43+
cur = head;
44+
head = null;
45+
prev = null;
46+
}
47+
48+
}
49+
50+
public static void main(String...args){
51+
TreeLinkNode root = new TreeLinkNode(1);
52+
root.left = new TreeLinkNode(2);
53+
root.right = new TreeLinkNode(3);
54+
root.left.left = new TreeLinkNode(4);
55+
root.left.right = new TreeLinkNode(5);
56+
root.right.right = new TreeLinkNode(7);
57+
connect(root);
58+
}
59+
}

0 commit comments

Comments
 (0)