트리란 상위 원소에서 하위원소로 내려가면서 확장되는 나무모양의 자료구조이다. 트리는
1. 원소들끼리 상,하위 계층관계를 가지고 있는 계층형 자료구조이다.
2. 하나에 원소가 여러개에 원소로 뻗어나갈 수 있는 1:n의 관계를 가진다.
트리는 DAG(Directed Acyclic Graph)의 한 종류로, 그래프와 많이 비교된다. 그래프와 트리의 차이를 자세히 알고 싶은 사람은 아래 참고란에 있는 *트리 vs 그래프 링크를 보면 많은 도움이 될 것이다. 여기서는 그냥 트리의 특징만 알고 넘어간다.
root node
트리의 시작노드
node
트리의 원소
형제노드
: 같은 부모 노드의 자식들 (부모가 같고, 같은 높이에 있음)
조상노드
: 루트 노드까지 이어지는 간선 경로에 있는 모든 상위 노드들
자손노드
: 서브트리에 있는 하위 노드들
단말 노드
: 차수가 0인 노드. 즉, 자식 노드가 없는 노드
edge(간선)
노드(트리의 원소)를 연결하는 선. 즉, 상위(부모)노드와 하위(자식)노드를 연결
degree(차수)
노드의 차수 : 연결된 자식 노드의 수
트리의 차수 : 전체 노드 중 차수가 가장 큰 노드의 차수
height/level(높이/레벨)
루트노드에서 특정 노드까지 가는데 필요한 간선의 수
트리의 높이 : 가장 먼 노드의 레벨
이진트리는 각 노드가 최대 2개의 자식 노드(왼쪽 자식, 오른쪽 자식)를 가질 수 있는 트리를 말한다.
이진 트리는 배열로 구현할 수 있지만, 수정과 삽입을 용이하게 하기 위해 Linked List를 쓰기도 한다.
트리 vs 그래프 :
http://freefeast.info/difference-between/difference-between-trees-and-graphs-trees-vs-graphs/
트리 이미지가 인상깊네요