트리 구조(tree structure)
트리 구조란?
- 나무에서 가지가 뻗는 모양이라 하여 트리 구조라 한다.
- 부모와 자식 관계의 노드로 구성된 데이터 구조이다.
트리 구조 용어
- Node(노드)
- 트리를 구성하고 있는 기본 요소
- 노드에는 키 또는 값과 하위 노드에 대한 포인터를 가지고 있음.
- A, B, C, D, E, F, G, H, I, J
- Root(뿌리)
- 트리의 최상위 노드
- A
- Parent(부모)
- 자식 노드를 가진 노드
- H, I에 부모 노드는 D
- Child(자식)
- 부모 노드의 하위 노드
- 노드 D의 자식 노드는 H, I
- Siblings(형제)
- 부모가 같은 노드 그룹
- H, I는 같은 부모를 가지는 형제 노드
- Leaf(나뭇잎)
- 자식이 없는 노드
- H, I, J, F, G
- Edge(간선)
- 노드와 노드 간의 연결선
- A, B, D, H들은 edge되어 있다.
- Depth(깊이)
- 루트에서 어떤 노드까지의 간선(Edge) 수
- 루트 노드의 깊이 : 0
- D의 깊이 : 2
- height(높이)
- 어떤 노드에서 리프 노드까지 가장 긴 경로의 간선(Edge) 수
- 리프 노드의 높이 : 0
- A 노드의 높이 : 3
트리 구조의 주의 점
-
트리 구조는 자식 관계의 다른 노드만을 가리켜야 한다.
동급의 노드나 부모의 노드를 가리키면 안된다.위의 구조는 9와 8이 동급의 노드를 가리키므로 트리 구조가 아니다.
-
출발점(root)이 하나여야 한다.
연결 리스트와 트리 구조
- 연결 리스트는 일자로 쭉 뻗은 단방향이기 때문에 뒤 또는 앞뒤로 작업이 가능했다.
- 그러나 트리는 갈수 있는 경로가 여러 가지이다.
- 사실 연결 리스트도 넓게 보면 가지가 하나인 트리라고도 할 수 있다.
트리 구조의 실제 예시
-
HTML DOM
ex) html -> head, body -> main, nav, … - 네트워크 라우팅
-
추상 구문 트리
ex) whileex) JSON
- 인공 지능
- Heap(힙)
- 힙도 트리로 된 자료 구조이다. - 운영 체제의 폴더
ex) 폴더 구조 및 경로 - 컴퓨터 파일 시스템
트리 구조의 종류
- 트리(Trees)
- 이진 트리(Binary Trees)
- 이진 탐색 트리(Binary Search Trees
- 등등 아주 많지만 위의 3가지가 대표적