Skip to content

Commit aa54043

Browse files
[N-0] refactor 116
1 parent 37620b9 commit aa54043

File tree

2 files changed

+65
-41
lines changed

2 files changed

+65
-41
lines changed

src/main/java/com/fishercoder/solutions/_116.java

+36-41
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import com.fishercoder.common.classes.TreeLinkNode;
44

5-
/** Given a binary tree
5+
/**
6+
* 116. Populating Next Right Pointers in Each Node
7+
*
8+
* Given a binary tree
69
710
struct TreeLinkNode {
811
TreeLinkNode *left;
@@ -32,52 +35,44 @@ You may assume that it is a perfect binary tree (ie, all leaves are at the same
3235
4->5->6->7 -> NULL */
3336

3437
public class _116 {
35-
//credit: https://discuss.leetcode.com/topic/1106/o-1-space-o-n-complexity-iterative-solution
36-
//based on level order traversal
37-
public static void connect(TreeLinkNode root) {
38+
public static class Solution1 {
39+
//credit: https://discuss.leetcode.com/topic/1106/o-1-space-o-n-complexity-iterative-solution
40+
//based on level order traversal
41+
public void connect(TreeLinkNode root) {
3842

39-
TreeLinkNode head = null; //head of the next level
40-
TreeLinkNode prev = null; //the leading node on the next level
41-
TreeLinkNode curr = root; //current node of current level
43+
TreeLinkNode head = null; //head of the next level
44+
TreeLinkNode prev = null; //the leading node on the next level
45+
TreeLinkNode curr = root; //current node of current level
4246

43-
while (curr != null) {
44-
while (curr != null) { //iterate on the current level
45-
//left child
46-
if (curr.left != null) {
47-
if (prev != null) {
48-
prev.next = curr.left;
49-
} else {
50-
head = curr.left;
47+
while (curr != null) {
48+
while (curr != null) { //iterate on the current level
49+
//left child
50+
if (curr.left != null) {
51+
if (prev != null) {
52+
prev.next = curr.left;
53+
} else {
54+
head = curr.left;
55+
}
56+
prev = curr.left;
5157
}
52-
prev = curr.left;
53-
}
54-
//right child
55-
if (curr.right != null) {
56-
if (prev != null) {
57-
prev.next = curr.right;
58-
} else {
59-
head = curr.right;
58+
//right child
59+
if (curr.right != null) {
60+
if (prev != null) {
61+
prev.next = curr.right;
62+
} else {
63+
head = curr.right;
64+
}
65+
prev = curr.right;
6066
}
61-
prev = curr.right;
67+
//move to next node
68+
curr = curr.next;
6269
}
63-
//move to next node
64-
curr = curr.next;
70+
//move to next level
71+
curr = head;
72+
head = null;
73+
prev = null;
6574
}
66-
//move to next level
67-
curr = head;
68-
head = null;
69-
prev = null;
7075
}
71-
7276
}
7377

74-
public static void main(String... args) {
75-
TreeLinkNode root = new TreeLinkNode(1);
76-
root.left = new TreeLinkNode(2);
77-
root.right = new TreeLinkNode(3);
78-
root.left.left = new TreeLinkNode(4);
79-
root.left.right = new TreeLinkNode(5);
80-
root.right.right = new TreeLinkNode(7);
81-
connect(root);
82-
}
83-
}
78+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.fishercoder;
2+
3+
import com.fishercoder.common.classes.TreeLinkNode;
4+
import com.fishercoder.solutions._116;
5+
import org.junit.BeforeClass;
6+
import org.junit.Test;
7+
8+
public class _116Test {
9+
private static _116.Solution1 solution1;
10+
private static TreeLinkNode root;
11+
12+
@BeforeClass
13+
public static void setup() {
14+
solution1 = new _116.Solution1();
15+
}
16+
17+
@Test
18+
public void test1() {
19+
root = new TreeLinkNode(1);
20+
root.left = new TreeLinkNode(2);
21+
root.right = new TreeLinkNode(3);
22+
root.left.left = new TreeLinkNode(4);
23+
root.left.right = new TreeLinkNode(5);
24+
root.right.right = new TreeLinkNode(7);
25+
26+
solution1.connect(root);
27+
}
28+
29+
}

0 commit comments

Comments
 (0)