트리는 컴퓨터 과학에서 중요한 자료구조 중 하나로, 노드들이 edge로 연결된 계층적 구조를 가진다.
트리의 최상위 노드를 루트 노드라고 하며, 나머지 노드들은 부모-자식 관계를 가지며 서로 연결된다.
root : 트리 최상위 노드
edge : 노드와 노드를 연결하는 선
parent : 자식 노드를 보유한 노드
child : 부모 노드의 하위 노드
sibling : 같은 부모 노드를 가진 동일 선상의 노드
leaf : 트리 최하단 노드
size : 모든 노드들의 개수 (root 포함)
depth : 선택한 노드에서 root까지의 거리
height : 선택한 노드에서 leaf 노드까지 가장 긴 경로에 있는 edge의 개수
- 모든 노드들이 하나의 자식 노드만 가지는 트리
- 부모 노드 밑의 자식 노드 개수를 최대 2개로 제한하는 형태
- 노드의 값, 데이터 크기 등과 상관없이 구성된다.
- 부모 노드를 기준으로 왼쪽 자식은 부모보다 작은 값, 오른쪽 자식은 부모보다 큰 값을 가진다.
left → visit → right
visit → left → right
left → right → visit
데이터를 계층적이고 직관적으로 표현할 수 있어, 데이터 검색과 정렬, 삽입, 삭제 등의 연산이 효율적이다.
트리의 구조가 복잡하여 설계와 구현이 어렵고, 데이터의 추가나 삭제에 따라 트리의 구조를 재조정해야 할 수도 있다.
트리는 데이터를 계층적이고 직관적으로 표현할 수 있어, 데이터의 관계를 이해하기 쉽고, 데이터 검색과 정렬, 삽입, 삭제 등의 연산이 효율적이다.
웹 페이지는 HTML 태그의 계층적 구조를 가지는 DOM (Document Object Model) 트리를 사용하여 렌더링된다.
프로그래밍 언어의 컴파일러는 소스 코드를 분석하고 실행하기 위해 구문 트리(Syntax tree)를 사용한다.
데이터베이스 관리 시스템(DBMS)에서는 B-트리, B+ 트리 등의 트리 구조를 사용하여 데이터를 효율적으로 관리한다.