-
Computer Science에서의 Tree란Data Structure 2021. 2. 20. 02:07
트리란 그래프 이론 상 Connected+Acyclic의 성질을 가지고 있는 그래프의 한 형태이다.
위와 같은 트리에서 edge(5,6)이 제거되면 모든 Vertex가 연결되어 있어야 한다는 Connected 성질을 만족하지 못한다.
또한 edge(4,6)이 추가된다면, 4-5-6 사이에 Cycle이 생겨 Acyclic 성질을 만족하지 못한다.
자료구조에서 구현하는 트리는 보통 Rooted Tree를 의미한다.
Rooted Tree의 Non-Recursive한 정의
-
데이터를 지닌 노드와, 노드들을 연결해주는 Directed Edge의 집합으로 이루어진다. Edge의 방향은 Parent Node에서 Child Node로 향한다.
-
Tree 상의 노드 중 In-degree가 0인 Node를 Root Node라고 한다. Root Node 이외의 모든 Node들은 Incomming Edge가 최대 1개 존재한다.
-
Tree 상의 모든 노드 K에 대해, Root에서 K로의 유일한 Path가 존재한다.
-
Node가 N개인 Tree의 Edge 수는 반드시 N-1개이다.
-
루트 노드를 제외한 모든노드는 1:1 매칭되는 부모 노드를 가지고 있다.
-
자식 노드가 없는 노드를 Leaf Node(단말 노드)라고 한다. 반대의 경우는 Non-leaf Node 혹은 Internal node라고 한다.
-
같은 부모 노드를 가진 Node들의 관계를 Sibling(형제)라고 한다.
-
만약 Node u에서 Node v로의 Path가 존재할 경우 u를 v의 ancestor(조상), v를 u의 decendant(후손)이라고 한다.
Rooted Tree의 Recursive한 정의
- Base case: Single Node는 Tree이다.
- Recursive step: Root + 0개 이상의 Subtree + Root에서 각각의 Subtree들의 Root로 향하는 Edge는 Tree이다.
Tree 용어
Degree(차수) 해당 Node의 Child 수 Height(높이) 해당 Node에서 도달할 수 있는 아무 Leaf Node까지 가장 긴 Path의 길이(= 두 Node간에 경로에 존재하는 edge의 수). Tree의 Height는 Root의 Height로 정의된다. Depth(깊이) Root에서 해당 Node까지의 Path의 길이. Tree의 Depth는 가장 Depth가 큰 Node의 Depth로 정의된다. Level(레벨) Depth + 1 트리는 계층적인 구조를 나타내는 비선형 자료구조로써 활용할 수 있다.
특히, 그 구조를 모든 Node의 degree가 최대 N인 N-ary Tree로 정형화되는 것이 일반적이다.
그 중에서도 N=2인 Binary Tree(이진 트리)가 가장 많이 사용된다.
'Data Structure' 카테고리의 다른 글
사이클이 없는 방향 그래프 DAG - Directed Acyclic Graph (2) 2021.06.14 서로소 집합을 관리하는 Disjoint Set(Union Find) (2) 2021.03.17 Array와 Linked List의 차이점 (0) 2021.01.31 % 연산을 이용한 Circular Array 구현 및 응용 (0) 2021.01.30 Full, Perfect, Complete ? 이진트리의 형태 (0) 2021.01.12 -