1. 트리
- 트리란 계층적인 구조를 표현하는 비순환 그래프입니다.
- 노드와 간선으로 구성되며, 루트 노드에서 시작하여 각 노드가 0개 이상의 자식 노드를 가집니다.
- 트리는 계층적인 데이터를 표현하거나 검색, 정렬, 삽입, 삭제 등의 연산을 수행하는 데 사용됩니다.
1.1 기본 구성 요소
- 트리의 기본 구성 요소를 이해하면 트리 자료구조를 쉽게 이해할 수 있습니다.
- 루트(Root): 트리의 최상위에 있는 노드
- 간선(Edge): 노드와 노드를 연결하는 선
- 노드(Node): 트리를 구성하는 각각의 요소
- 부모(Parent): 특정 노드의 상위 노드
- 자식(Child): 특정 노드의 하위 노드
- 단말(Leaf): 자식이 없는 말단 노드
1.2 트리의 속성
- 높이(Height): 루트에서 가장 먼 리프까지의 거리
- 깊이(Depth): 루트에서 특정 노드까지의 거리
- 레벨(Level): 같은 깊이에 있는 노드의 집합
- 차수(Degree): 노드의 자식 수
class TreeNode:
def __init__(self, value):
self.value = value
self.parent = None
self.children = []
self.height = 0
self.depth = 0
2. 이진 트리 기초
2.1 정의
- 각 노드가 최대 2개의 자식을 가지는 트리입니다.
- 왼쪽 자식과 오른쪽 자식을 명확히 구분합니다.
class BinaryTreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None