데브허브 | DEVHUB | 이진 트리
- 이진 트리는 최대 두 개의 자식 노드를 가지는 계층적 자료 구조로, 루트 노드에서 시작하여 리프 노드로 뻗어 나갑니다. 🌲
- 트리의 높이는 루트에서 가장 먼 리프까지의 거리로, 노드 수 또는 엣지 수 기준으로 측정될 수 있습니다. 📏
- 각 노드는 값(value)과 왼쪽/오른쪽 자식 노드를 가리키는 참조(left, right) 속성을 가집니다. 🏷️
- 이진 트리를 순회하는 주요 방식에는 프리오더, 인오더, 포스트오더, 레벨오더가 있습니다. 🚶
- **프리오더(Preorder)**는 '현재 노드 -> 왼쪽 자식 -> 오른쪽 자식' 순서로, 트리 구조 복제나 저장에 유용합니다. 💾
- **인오더(Inorder)**는 '왼쪽 자식 -> 현재 노드 -> 오른쪽 자식' 순서로, 이진 탐색 트리에서 오름차순 정렬 결과를 얻을 때 사용됩니다. ⬆️
- **포스트오더(Postorder)**는 '왼쪽 자식 -> 오른쪽 자식 -> 현재 노드' 순서로, 트리 전체 삭제와 같이 하위 노드부터 처리가 필요할 때 적합합니다. ♻️
- **레벨오더(Level Order)**는 큐(Queue) 자료구조를 활용하여 트리를 위에서 아래로, 레벨별로 순회하며, 최단 경로 탐색 등에 활용됩니다. 🗺️
- 각 순회 방식은 코드의 재귀 호출 순서(프린트, 레프트, 라이트)만 변경하여 구현할 수 있으며, 각기 다른 목적에 최적화되어 있습니다. 🔄