Skip to content

Commit 261d529

Browse files
committed
Algorithm: Update tree traversal
1 parent f0e29a9 commit 261d529

1 file changed

Lines changed: 18 additions & 13 deletions

File tree

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
package com.hellokoding.algorithm;
22

33
import com.hellokoding.datastructure.BSTByLinkedList;
4-
5-
import java.util.ArrayDeque;
6-
import java.util.Queue;
4+
import java.util.*;
75

86
public 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

Comments
 (0)