💫 트리는 노드로 이루어진 자료 구조
✅ 트리는 하나의 루트 노드를 갖는다.
✅ 루트 노드는 0개 이상의 자식 노드를 갖고 있다.
✅ 그 자식 노드 또한 0개 이상의 자식 노드를 갖고 있고, 이는 반복적으로 정의된다.
트리 관련 용어
루트 노드 | 부모가 없는 노드, 트리는 하나의 루트 노드만을 가진다. |
---|---|
단말 노드 | 자식이 없는 노드 |
내부 노드 | 단말 노드가 아닌 노드 |
간선 | 노드를 연결하는 선 ( ≒ link, branck ) |
형제 | 같은 부모를 가지는 노드 |
노드의 크기 | 자신을 포함한 모든 자손 노드의 개수 |
노드의 깊이 | 루트에서 어떤 노드에 도달하기 위해 거쳐야 하는 간선의 수 |
노드의 레벨 | 트리의 특정 깊이를 가지는 노드의 집합 |
노드의 차수 | 하위 트리 개수 / 간선 수 ⇒ 각 노드가 가진 가지의 수 |
트리의 차수 | 트리의 최대 차수 |
트리의 높이 | 루트 노드에서 가장 깊숙히 있는 노드의 깊이 |
트리 특징
트리 종류
이진 트리 (Binary Tree)
중위 순회(in-order traversal) | Left → Root → Right |
---|---|
전위 순회(pre-order traversal) | Root → Left → Right |
후위 순회(post-order traversal) | Left → Right → Root |
이진 탐색 트리 (Binary Search Tree)
균형 트리
완전 이진 트리 (Complete Binary Tree)
전 이진 트리 (Full Binary Tree 또는 Strictly Binary Tree)
포화 이진 트리 (Perfect Binary Tree)
이진 힙 (최소힙과 최대힙)
트라이 (Trie) → 접두사 트리(Prefix Tree)라고도 부름
트리 구현 방법
그래프와 트리의 차이
그래프 | 트리 | |
---|---|---|
정의 | 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 자료구조 | 그래프의 한 종류로 DAG(방향성이 있는 비순환 그래프)의 한 종류 |
방향성 | 방향 그래프, 무방향 그래프 모두 존재 | 방향 그래프 |
사이클 | 사이클 가능 자체 간선(self-loop)도 가능 순환 그래프 비순환 그래프 모두 존재 | 사이클 불가능 자체 간선(self-loop)도 불가능 비순환 그래프 |
루트 노드 | 루트 노드의 개념 없음 | 한 개의 루트 노드만 존재하고, 모든 자식 노드는 한 개의 부모 노드만을 가짐 |
부모-자식 | 부모-자식 개념 X | 부모-자식 개념 O ∴ top-bottom 또는 bottom-top으로 이루어짐 |
모델 | 네트워크 모델 | 계층 모델 |
순회 | DFS, BFS | DFS, BFS안의 Pre-, In-, Post-order |
간선의 수 | 그래프에 따라 간선의 수가 다름, 간선이 없을 수도 있음 | 노드가 N인 트리는 항상 N-1의 간선을 가짐 |
경로 | 임의의 두 노드간의 경로는 유일 | |
예시 및 종류 | 지도, 지하철 노선의 최단 경로, 전기 회로의 소자들, 도로(교차점과 일방 통행길), 선수 과목 | 이진 트리, 이진 탐색 트리, 균형 트리, 이진 힙 등 |
https://gmlwjd9405.github.io/2018/08/12/data-structure-tree.html