File tree 1 file changed +6
-3
lines changed
src/main/java/com/rampatra/trees
1 file changed +6
-3
lines changed Original file line number Diff line number Diff line change 6
6
import java .util .Queue ;
7
7
8
8
/**
9
+ * Given a binary tree, return lists of nodes at each level. The number of lists in the output will be equal to
10
+ * the number of levels in the tree.
11
+ *
9
12
* @author rampatra
10
13
* @since 2019-04-02
11
14
*/
@@ -34,14 +37,14 @@ private static List<List<TreeNode>> connectNodes(TreeNode root) {
34
37
List <TreeNode > connectedNodesAtLevel = new ArrayList <>();
35
38
36
39
queue .add (root );
37
- queue .add (new TreeNode (null ));
40
+ queue .add (new TreeNode (null )); // we use a node with null value as a marker for each level
38
41
39
42
while (!queue .isEmpty ()) {
40
43
TreeNode node = queue .poll ();
41
-
44
+
42
45
if (node .val != null ) {
43
46
connectedNodesAtLevel .add (node );
44
- } else {
47
+ } else { // when we encounter a null in the queue, we know that a level is completed
45
48
allNodes .add (connectedNodesAtLevel );
46
49
connectedNodesAtLevel = new ArrayList <>();
47
50
if (queue .peek () != null ) queue .add (new TreeNode (null ));
You can’t perform that action at this time.
0 commit comments