1. Binary Tree (이진 트리)
- 정의: 각 노드가 최대 두 개의 자식 노드를 가질 수 있는 트리 구조
- 특징:
- 자식 노드의 값에 대한 제약 없음.
- 트리 구조에서 각 노드는 왼쪽과 오른쪽 자식 노드를 가질 수 있음. → 노드가 있을 수도 없을 수도 있음.
- 트리의 순서나 정렬에 대한 규칙 없음.
2. Binary Search Tree (이진 검색 트리)
- 정의: 이진 트리의 일종으로, 왼쪽 서브트리는 해당 노드보다 작은 값들로 구성되고, 오른쪽 서브트리는 해당 노드보다 큰 값들로 구성됨.
- 특징:
- 왼쪽 자식 노드의 값은 부모 노드보다 작고, 오른쪽 자식 노드의 값은 부모 노드보다 크다!!!
- 따라서 검색, 삽입, 삭제가 빠르게 이루어질 수 있다. (평균 시간 복잡도: O(log n))
- 균형이 맞지 않으면 성능이 떨어질 수 있다. 예를 들어 트리가 한쪽으로 치우치면 성능이 O(n)로 최악의 경우가 될 수 있다.
차이점
- Binary Tree: 자식 노드 값에 대한 규칙 없음.
- Binary Search Tree: 왼쪽 자식 노드의 값은 부모보다 작고, 오른쪽 자식 노드의 값은 부모보다 큼.
1. BFS (Breadth-First Search, 너비 우선 탐색)
- 정의: 트리의 각 레벨을 순차적으로 탐색하는 방식 → 루트에서 시작하여, 같은 레벨에 있는 모든 노드를 탐색한 후, 그 다음 레벨로 넘어간다.
- 작동 방식:
- 루트 노드에서 시작하여, 왼쪽에서 오른쪽으로 차례대로 모든 자식 노드를 큐(Queue)에 넣는다.
- 큐에서 하나씩 노드를 꺼내면서 그 자식 노드들을 큐에 넣고, 이를 반복한다.
- 각 레벨을 차례대로 탐색하며, 한 번에 하나의 레벨씩 탐색한다.
- 특징:
- 트리의 가장 가까운 노드부터 탐색
- 큐(Queue)를 이용하여 구현
- 주로 최단 경로를 찾는 데 유용
2. DFS (Depth-First Search, 깊이 우선 탐색)
- 정의: 가능한 한 깊게 트리를 탐색하는 방식 → 루트에서 시작하여, 각 분기점을 따라가며 끝까지 탐색하고, 더 이상 갈 곳이 없으면 마지막 분기점으로 돌아가서 다른 경로 탐색
- 작동 방식:
- 루트 노드에서 시작하여, 왼쪽 자식부터 깊게 탐색한다.
- 한 가지 경로를 끝까지 탐색한 후, 되돌아가서 다른 경로를 탐색한다.
- 특징:
- 트리의 가장 깊은 노드부터 탐색
- 주로 스택 자료구조나 재귀를 이용하여 구현
- 순차적으로 깊이 있는 경로를 따라가므로 메모리 사용이 다소 많이 듦.
- DFS의 세 가지 탐색 방법
- Pre-order (전위 탐색): 현재 노드 → 왼쪽 서브트리 → 오른쪽 서브트리
- In-order (중위 탐색): 왼쪽 서브트리 → 현재 노드 → 오른쪽 서브트리 (BST에서 값이 오름차순으로 정렬되는 특징)
- Post-order (후위 탐색): 왼쪽 서브트리 → 오른쪽 서브트리 → 현재 노드
차이점
구분 | BFS | DFS |
탐색 방식 | 각 레벨을 차례대로 탐색 | 한 경로를 끝까지 탐색 후, 다른 경로 탐색 |
사용 자료구조 | 큐(Queue) | 스택(Stack) / 재귀 |
탐색 순서 | 1번 레벨 → 2번 레벨 → 3번 레벨… | 루트 → 왼쪽 서브트리 → 오른쪽 서브트리 |
주요 특징 | 최단 경로 탐색에 유리 | 깊이 있는 경로를 우선 탐색, 트리의 구조에 따라 달라짐 |
예시
- BFS: 1 → 2 → 3 → 4 → 5 → 6 → 7 (시간 복잡도: O(n))
- DFS: 1 → 2 → 4 → 5 → 3 → 6 → 7 (시간 복잡도: O(n))
'자율 학습 > 스터디' 카테고리의 다른 글
[LeetCode 75] Lowest Common Ancestor of a Binary Tree (0) | 2025.04.06 |
---|---|
[LeetCode75] Find Peak Element (0) | 2025.04.01 |
[LeetCode 75] 700. Search in a Binary Search Tree (0) | 2025.03.28 |
[LeetCode 75] 215. Kth Largest Element in an Array (1) | 2025.03.25 |
[LeetCode] 2352. Equal Row and Column Pairs (0) | 2025.03.18 |