11package com .hellokoding .algorithm ;
22
33import com .hellokoding .datastructure .BSTByLinkedList ;
4-
5- import java .util .ArrayDeque ;
6- import java .util .Queue ;
4+ import java .util .*;
75
86public class TreeBreadthFirstTraversal {
9- static void breadthFirstTraversal (BSTByLinkedList .Node root ) {
10- Queue <BSTByLinkedList .Node > queue = new ArrayDeque <>();
7+ List <List <Integer >> res = new ArrayList <>();
8+ public List <List <Integer >> levelOrderTraversal (BSTByLinkedList .Node root ) {
9+ if (root == null ) return res ;
10+
11+ Deque <BSTByLinkedList .Node > queue = new ArrayDeque <>();
1112 queue .offer (root );
1213
1314 while (!queue .isEmpty ()) {
14- BSTByLinkedList .Node currentNode = queue .poll ();
15- System .out .println (currentNode );
15+ List <Integer > level = new ArrayList <>();
1616
17- if (currentNode .left != null )
18- queue .offer (currentNode .left );
17+ int size = queue .size ();
18+ for (int i =0 ; i <size ; i ++) {
19+ root = queue .remove (); level .add (root .data );
20+ if (root .left != null ) queue .add (root .left );
21+ if (root .right != null ) queue .add (root .right );
22+ }
1923
20- if (currentNode .right != null )
21- queue .offer (currentNode .right );
24+ res .add (level );
2225 }
26+
27+ return res ;
2328 }
2429
2530 public static void main (String [] args ) {
@@ -29,7 +34,7 @@ public static void main(String[] args) {
2934 tree .insert (3 );
3035 tree .insert (1 );
3136 tree .insert (9 );
32-
33- breadthFirstTraversal ( tree . root );
37+ List < List < Integer >> result = new TreeBreadthFirstTraversal (). levelOrderTraversal ( tree . root );
38+ System . out . println ( Arrays . deepToString ( result . toArray ()) );
3439 }
3540}
0 commit comments