-
[알고리즘] 이진트리탐색 구현하기 - BFS(너비우선탐색)알고리즘 2024. 12. 2. 19:44
이진트리탐색 구현하기- BFS(너비우선탐색)
BFS(너비우선탐색)
-bfs는 트리의 각 레벨을 순차적으로 탐색하는 방법이다.
코드
- Node 클래스 생성
- 각 node는 값, 왼쪽자식, 오른쪽자식으로 구성되어있음.
- 이진트리탐색(BFS)
- bfs를 구현하기위해서는 큐를 이용해야 한다.
- 여기서는 덱을 이용해서 구현했다.
class Node { int data; Node lt,rt; public Node(int val) { data = val; lt=rt=null; } } public class Main { static Node root; public static void BFS(Node root){ Deque<Node> dq = new ArrayDeque<>(); dq.addFirst(root); int L = 0; while(!dq.isEmpty()){ int len = dq.size(); System.out.print(L + " : "); for(int i=0; i<len; i++){ Node cur = dq.pollLast(); System.out.print(cur.data + " "); if(cur.lt != null) dq.addFirst(cur.lt); if(cur.rt != null) dq.addFirst(cur.rt); } L++; System.out.println(); } } public static void main(String[] args){ root = new Node(1); root.lt = new Node(2); root.rt = new Node(3); root.lt.lt = new Node(4); root.lt.rt = new Node(5); root.rt.lt = new Node(6); root.rt.rt = new Node(7); BFS(root); // 1: 1 // 2: 2 3 // 3: 3 4 5 6 출력 }
'알고리즘' 카테고리의 다른 글
[알고리즘] 이진트리탐색 구현하기 - DFS(깊이우선탐색) (0) 2024.12.02 [알고리즘] 부분집합 구하기(DFS) (0) 2024.11.28 [알고리즘] 재귀함수 활용해보기 (0) 2024.11.27 [알고리즘] java 좌표정렬 (compareTo) (0) 2024.11.17 [알고리즘] 삽입정렬 (0) 2024.11.14 - Node 클래스 생성