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
이런식으로 탐색된다.
'코딩연습이 좋아서 > 이론이 좋아서' 카테고리의 다른 글
Recursive, Tree, Graph(DFS, BFS 기초) - Tree 말단노드까지의 가장 짧은 경로(DFS) (0) | 2024.12.12 |
---|---|
Recursive, Tree, Graph(DFS, BFS 기초) - 송아지 찾기 1(BFS : 상태트리탐색) (0) | 2024.12.12 |
Recursive, Tree, Graph(DFS, BFS 기초) - 부분집합 구하기(DFS) (0) | 2024.12.12 |
Recursive, Tree, Graph(DFS, BFS 기초) - 이진트리순회(DFS : Depth-First Search) (0) | 2024.12.12 |
Recursive, Tree, Graph(DFS, BFS 기초) - 피보나치 재귀(메모이제이션) (0) | 2024.12.12 |