
트리는 계층적 관계를 나타내는 비선형 자료구조입니다. 노드(node)들과 이 노드들을 연결하는 간선(edge)들로 구성되어 있습니다. 트리는 다음과 같은 특징을 가집니다:

각 노드가 최대 두 개의 자식을 가질 수 있는 트리입니다.
마지막 레벨을 제외한 모든 레벨이 완전히 채워져 있고, 마지막 레벨의 모든 노드는 가능한 한 왼쪽에 있는 이진 트리입니다.
모든 내부 노드가 두 개의 자식을 가지고, 모든 리프 노드가 같은 레벨에 있는 이진 트리입니다.
왼쪽과 오른쪽 서브트리의 높이 차이가 1 이하인 이진 트리입니다.
왼쪽 서브트리의 모든 노드 값이 현재 노드보다 작고, 오른쪽 서브트리의 모든 노드 값이 현재 노드보다 큰 이진 트리입니다.
자가 균형 이진 탐색 트리로, 삽입과 삭제 후에 트리의 균형을 자동으로 맞춥니다.
자가 균형 이진 탐색 트리의 한 종류로, 각 노드에 색깔 속성을 추가하여 균형을 유지합니다.
데이터베이스와 파일 시스템에서 널리 사용되는 자가 균형 트리입니다.
트리 기본구조
class TreeNode:
def __init__(self, value):
self.value = value
self.children = []
def add_child(self, child_node):
self.children.append(child_node)
이진 트리의 경우:
class BinaryTreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
트리 순회는 트리의 모든 노드를 체계적으로 방문하는 과정
트리 구조는 다양한 분야에서 활용됩니다:
트리는 다양한 분야에서 널리 사용되는 중요한 자료구조입니다. 계층적 관계를 표현하는 데 탁월하며, 효율적인 검색과 정렬을 제공합니다. 다양한 변형과 응용이 존재하므로, 문제의 특성에 맞는 적절한 트리 구조를 선택하는 것이 중요합니다.
참고 자료
인프런 - 코딩 테스트 합격자 되기 - C++
코딩 테스트 합격자 되기 - 파이썬 편
트리(그래프)