코딩연습이 좋아서/이론이 좋아서
Recursive, Tree, Graph(DFS, BFS 기초) - 이진트리 레벨탐색(BFS : Breadth-First Search)
zoaseo
2024. 12. 12. 22:21
import java.util.LinkedList;
import java.util.Queue;
class Node {
int data;
Node lt;
Node rt;
public Node(int data) {
this.data = data;
this.lt = null;
this.rt = null;
}
}
public class Main {
private Node root;
public static void BFS(Node root) {
Queue<Node> queue = new LinkedList<>();
queue.offer(root);
int L = 0;
while (!queue.isEmpty()) {
int len = queue.size();
System.out.print(L + " : ");
for (int i = 0; i < len; i++) {
Node cur = queue.poll();
System.out.print(cur.data + " ");
if (cur.lt != null) queue.offer(cur.lt);
if (cur.rt != null) queue.offer(cur.rt);
}
L++;
System.out.println();
}
}
public static void main(String[] args) {
Main tree = new Main();
tree.root = new Node(1);
tree.root.lt = new Node(2);
tree.root.rt = new Node(3);
tree.root.lt.lt = new Node(4);
tree.root.lt.rt = new Node(5);
tree.root.rt.lt = new Node(6);
tree.root.rt.rt = new Node(7);
BFS(tree.root);
}
}
- 레벨 탐색 순회 출력 : 1 2 3 4 5 6 7
0 : 1
1 : 2 3
2 : 4 5 6 7
이런식으로 탐색된다.