Profile

Tree

트리의 특징

트리의 구성요소

트리는 모두 Node 로 구성되어 있으며 트리 내의 위치에 따라 명칭이 달라진다.
Root Node : 트리의 가장 최상단에 위치한 Node
Branch Node : Root 와 Leaf 사이에 위치한 Node
Leaf Node : Branch 노드 끝에 존재하는 Node 또는 단말 노드 (Terminal Node)

트리의 Node 간의 관계

Parent : 특정 Node 의 상위 Node
Children : 특정 Node 의 하위 Node
Sibling : 같은 상위 Node 에서 분기된 위상이 같은 Node

트리의 Path

Length : 특정 Node 부터 시작해서 특정 Node 까지 이동하는 데 거치는 Node 의 개수
Depth : Root Node 로 부터 특정 Node 까지의 경로 length
Level : Depth 가 같은 Node 들의 집합
Height : 전체 트리에서 Depth 가 가장 깊은 곳의 값 즉 전체 트리의 높이가 된다.
Degree
특정 Node 의 차수 (Degree) 는 Children Node의 갯수
트리의 차수 (Degree) 는 각 Node 들의 Degree 중 가장 높은 값

트리의 표현방법

중첩된 괄호 표기법 (Nested Parenthesis Notation)

(A(B(C)(D(E)(F)))(G(H))(I(J(K))))
Python

들여쓰기 표기법 (Indentation Notation)

탐색기의 폴더 구조의 표기법

노드의 특징

노드의 표현방법

N-링크 표기법 (N-Link)

Node의 Degree 가 N 이라면, 노드가 N 개의 링크를 가지고 있어서 이 링크들이 각각 자식 노드를 가리키도록 노드를 구성하는 방법
단점으로 차수가 노드마다 달라지는 트리에는 적용하기 매우 복잡하다.

Left Child-Right Sibling 표기법

왼쪽에는 자식에 대한 포인터를 갖고, 오른쪽에는 형제에 대한 포인터를 갖는 노드 구조
특정 Node 의 모든 Children Node 를 얻으려면, 왼쪽 자식 노드에 대한 포인터만 가지고 있으면 된다.