트리의 정의
트리는 그래프의 특수한 형태로써 노드와 가지를 이용하여 사이클을 이루지 않도록 구성한 자료 구조이다.
(사이클이란 처음과 마지막 정점이 같은 경로인 것을 말한다.)
트리 관련 용어
- 노드 (Node) 트리의 기본 구성 요소이다.
- 근노드 (Root Node): 가장 상위에 위치한 노드이다.
- 레벨 (Level): 근노드를 기준으로 특정 노드까지의 경로 길이를 말한다.
- 조상 노드 (Ancestors Node): 어떤 노드에서부터 근노드에 이르는 경로상의 모든 노드이다.
- 부모 노드 (Parent Node): 어떤 노드에 연결된 이전 레벨의 노드이다.
- 자식 노드 (Child Node): 어떤 노드에 연결된 다음 레벨의 노드이다.
- 형제 노드 (Brother Node): 같은 부모를 가진 노드이다.
- 깊이 (Depth): 트리의 최대 레벨이다.
- 차수 (Degree): 어떤 노드에 연결된 자식 노드의 수이다.
- 단말 노드 (Terminal Node): 트리의 제일 마지막에 위치한 노드이다. (차수가 0인 것을 의미한다.)
- 트리의 차수 (Degree): 트리의 노드 중 가장 큰 차수이다.
이진 트리 (Binary Tree)
- 차수(연결된 자식 노드의 수가)가 2이하인 노드들로만 구성이 된 트리이다.
- 이 트리의 레벨 K에서 최대 노드의 수를 구하는 공식은 2^K-1이다. (깊이, 레벨이 5인 트리의 최대 노드수는 2^5-1이므로 31이다.)
이진 트리의 구조
- 정이진 트리: 첫 번째 레벨부터 마지막 레벨까지 모두 2개씩 채워진 트리이다.
- 전이진 트리: 정이진 트리에서 한쪽 방향 노드가 아예 존재하지 않는 트리를 말한다.
- 사향 이진 트리: 근노드로부터 한쪽 방향으로만 기울어진 트리를 말한다.
이진 트리의 운행법
전위(Preorder) 운행의 순서: Root → Left → Right
중위(Inorder) 운행의 순서: Left → Root →Right
후위(Postorder) 운행의 순서: Left → Right → Root