CS지식/자료구조 (Data Structure)
트리(Tree) 기본 구조와 핵심 개념 정리
불광동 물주먹
2025. 4. 27. 01:07
트리(Tree) 기본 구조와 핵심 개념 정리
1. 트리(Tree)란 무엇인가?
트리는 **노드(Node)**들의 집합으로 구성된 비선형 자료구조이다.
각 노드는 하나의 값(value)과 여러 개의 자식 노드(child nodes)에 대한 **레퍼런스(참조)**를 가진다.
트리의 특징
- 루트(Root): 최상단에 위치한 하나의 노드
- 사이클 없음: 어떤 경로로도 다시 자신에게 돌아올 수 없다.
- 부모-자식 관계: 각 자식 노드는 오직 하나의 부모 노드만 가진다.
- 계층적 구조: 데이터가 순차적으로가 아닌 계층적으로 저장된다.
- 재귀적 성질: 각 노드 자체가 또 다른 서브트리(subtree)를 구성할 수 있다.
2. 트리 기본 용어 정리

용어 | 설명 |
간선(Edge) | 노드와 노드를 연결하는 선. 구현 관점에서는 레퍼런스(포인터) 의미. |
루트 노드(Root Node) | 트리의 가장 최상단에 있는 노드. 오직 하나 존재. |
자녀 노드(Child Node) | 어떤 노드로부터 이어진 하위 노드들. |
부모 노드(Parent Node) | 자녀 노드를 가지는 노드. 위 사진 - 2,5,9,6,11 |
형제 노드(Sibling Node) | 같은 부모를 공유하는 노드들. 위 사진 - {8,1,4} , {6,7} , {5,9} |
조상 노드(Ancestor Node) | 부모를 거슬러 올라가면서 만나는 모든 노드들. 위 사진 - 8의 조상 노드 - 11,9,2 |
자손 노드(Descendant Node) | 어떤 노드의 자녀와 그 자녀의 자녀까지 모두 포함. 위 사진 - 9의 자손 노드 - 11,8,1,4 |
내부 노드(Internal Node) | 자녀 노드를 가지고 있는 노드. 위 사진 - 2,5,9,6,11 |
외부 노드(External Node, Leaf Node) | 자녀 노드가 없는 노드. (= 리프 노드) 위 사진 - 3,7,8,1,4 |
경로(Path) | 한 노드에서 다른 노드까지 연결된 노드들의 연속. 위 사진 - 2에서 7 경로 : 2-5-7 |
경로 길이(Path Length) | 경로를 따라 이동할 때 지나야 하는 간선(Edge) 수. 위 사진 - 2에서 7 경로 길이 :3 , 2에서 3 경로 길이 :4 |
노드의 높이(Node Height) | 해당 노드에서 가장 먼 리프 노드까지의 경로 길이. 위 사진 - 5의 높이 :2 , 리프의 노드의 높이 : 0 |
트리의 높이(Tree Height) | 루트 노드의 높이. 트리에서 가장 먼 리프까지의 경로 길이. 위 사진 - 트리 높이 : 3 |
노드의 깊이(Node Depth) | 루트 노드에서 특정 노드까지 이동한 간선 수. 위 사진 - 11의 깊이 :2 , 루트 노드의 깊이 : 0 |
트리의 깊이(Tree Depth) | 트리에서 가장 깊게 위치한 노드의 깊이. 위 사진 - 트리 깊이 :3 , 트리 높이 = 트리 깊이 |
노드의 차수(Node Degree) | 해당 노드가 가진 자녀 노드의 수. 위 사진 - 11의 차수 :3 , 3의 차수 : 0 |
트리의 차수(Tree Degree) | 트리 전체 노드 중 가장 높은 차수. 위 사진 - 트리의 차수 : 3 |
두 노드 사이 거리(Distance) | 두 노드를 연결하는 최단 경로상의 간선 수. 위 사진 - Distance(9,8) : 2 , Distance(3,8) : 6) |
노드의 레벨(Level) | 루트에서 몇 번 간선을 거쳐 도달했는지를 나타내는 수. 위 사진 - 루트 노드의 레벨 : 0 , 5 노드의 레벨1 , 11 노드 레벨 2 |
트리의 폭(Tree Width) | 임의의 동일 레벨에 존재하는 노드의 수 중 최대값. 위 사진 - level 2의 width : 3 |
노드의 크기(Node Size) | 해당 노드와 모든 자손 노드 수의 합. 위 사진 - 9의 크기 : 5 , 5의 크기 :4 |
트리의 크기(Tree Size) | 트리 전체에 존재하는 노드 수. |
서브트리(Subtree) | 하나의 노드와 그 노드의 모든 자손 노드로 구성된 트리. |
3. 트리의 기본 성질
- 루트 노드는 반드시 하나만 존재한다.

- 트리는 순환(사이클)이 존재하지 않는다.

- 하나의 자식 노드는 정확히 하나의 부모를 가진다.

- 트리는 데이터가 순차적으로 저장되는 것이 아니라 계층적으로 저장된다.
- 트리의 각 노드는 독립적인 서브트리를 구성할 수 있다.
4. 이진 트리(Binary Tree)
이진 트리란, 각 노드가 최대 두 개 이하의 자식 노드만 가지는 트리이다.
왼쪽 자식을 Left Child, 오른쪽 자식을 Right Child라 부른다.
이진 트리의 특징
- 모든 노드는 0개, 1개 또는 2개의 자식만 가질 수 있다.
- 이진 트리는 다양한 종류로 구분될 수 있다.
5. 이진 트리의 종류
1) 포화 이진 트리(Perfect Binary Tree)
- 모든 레벨이 노드로 가득 채워진 트리.
- 모든 리프 노드가 동일한 레벨에 위치.

2) 완전 이진 트리(Complete Binary Tree)
- 마지막 레벨을 제외한 모든 레벨이 가득 채워져 있다.
- 마지막 레벨은 왼쪽부터 순서대로 노드가 차 있다.

3) 정 이진 트리(Full Binary Tree)
- 모든 노드가 자식 노드를 0개 또는 2개 가진다.
- 즉, 자식이 하나만 있는 노드는 존재하지 않는다.

4) 변질 이진 트리(Degenerate/Skewed Binary Tree)
- 각 부모 노드가 자식을 하나만 가진 트리.
- 일종의 리스트 형태처럼 한쪽으로 길게 쏠린 구조.
- 왼쪽만 연결: Left-skewed Tree
- 오른쪽만 연결: Right-skewed Tree

5) 균형 이진 트리(Balanced Binary Tree)
- 모든 노드의 왼쪽, 오른쪽 서브트리 높이 차가 최대 1 이하.
- 트리의 높이가 log(N)에 가깝게 유지되어 효율적인 탐색 가능.

6. 트리 구조의 재귀적 성질
트리는 본질적으로 재귀적(Recursive) 구조를 가진다.
- 루트 노드를 기준으로 각 자식 노드들은 자신만의 또 다른 서브트리(subtree)를 구성한다.
- 이 재귀적 성질 덕분에 트리 탐색(DFS, BFS) 같은 알고리즘이 재귀 호출 방식으로 쉽게 구현된다.
마무리 정리
트리는 단순히 데이터를 담는 그릇이 아니라,
복잡한 관계(부모-자식, 조상-자손)를 표현하고, 빠르게 탐색, 삽입, 삭제할 수 있는 계층적 자료구조이다.
트리 구조를 이해하면,
이진 탐색 트리(BST), 힙(Heap), 레드-블랙 트리(Red-Black Tree), B-트리 등 고급 자료구조도 자연스럽게 이어서 이해가 가능