트리(tree)
각각의 자료들을 계층적으로 서로 연결한 자료 구조
트리의 특징
- 상위 원소에서 하위 원소로 내려가면서 확장되는 나무 모양 구조
- 노드와 연결된 노드들 사이에는 부모와 자식 관계가 있다.(계층적 구조)
- 한 방향으로만 연결되어 있고, 자식 노드는 반드시 하나의 부모만 갖는다.
- 여러 노드가 한 노드를 가리킬 수 없는 구조이다.
트리 용어
간선(edge) | 노드와 노드의 연결 |
노드(node) | 트리를 구성하는 요소 하나하나 |
루트(root node) | 트리의 시작 노드. 부모가 없는 노드. 트리는 하나의 루트 노드만을 가진다. |
단말 노드(leaf node) | 자식을 갖지 않는 노드 |
부모(Parent Node) | 특정 노드의 바로 위에 있느 노드 |
자식(Child Node) | 특정 노드의 하위에 있는 노드 |
형제(Sibling Node) | 같은 부모를 가지는 노드 |
깊이(Depth) | 루트 노드에서 자신까지 가는 경로의 길이(즉, edge의 개수) |
레벨(Level) | 루트를 레벨1로 하고 그 자식노드는 +1 |
노드의 차수(degree) | 임의의 노드가 갖는 자식 노드의 수 |
트리의 차수 | 각 노드의 차수 중 최댓값 |
숲(forest) | 루트를 제거했을 때 생기는 서브 트리 |
이진 트리(binary tree)
모든 노드의 차수가 2 이하인 트리
이진 트리의 성질
- 이진 트리에서 노드의 개수를 $n$개로 정의하였을 때, 간선의 개수는 항상 $n-1$개를 가진다.
- 높이가 h일 때 노드의 최소 개수는 $h$개이며, 최대 개수는 $2^h-1$개이다.
이진 트리의 종류
포화 이진 트리 (full binary tree) |
완전 이진 트리 (complete binary tree) |
편향 이진 트리 (skewed binary tree) |
![]() |
![]() |
![]() |
모든 레벨에 노드가 완전히 찬 트리 | 높이가 $h$인 트리의 레벨 $1$부터 $h-1$까지 모든 노드가 채워져 있고 마지막 레벨에서는 노드가 왼쪽에서 오른쪽으로 저장된 구조 |
각 노드가 왼쪽 혹은 오른쪽으로 치우쳐 있는 구조 |
최대 레벨 수를 $k$라고 할 때, 전체 노드의 수는 $2^k-1$이다. 노드에 번호를 붙이는 순서는 각 레벨을 단위로 왼쪽에서 오른쪽으로 부여한다. |
노드의 개수는 $n$개이고 최대 레벨이 $k$인 완전 이진 트리에서 $n<=2^k-1$이 성립한다. |
이진 트리의 순회(traversal)
이진 트리의 모든 노드를 정해진 순서에 따라 한 번씩 방문하는 것
전위 순회 | 중위 순회 | 후위 순회 |
![]() |
![]() |
![]() |
루트 노드 → 왼쪽 서브 트리 → 오른쪽 서브 트리 | 왼쪽 서브 트리 → 루트 노드 → 오른쪽 서브 트리 | 왼쪽 서브 트리 → 오른쪽 서브 트리 → 루트 노드 |
그래프(graph)
[정점] 자료가 저장되어 있는 각 노드
[간선] 정점을 연결하는 링크
※ 트리와 그래프의 차이
트리 | 그래프 |
방향이 있음 | 방향이 없을 수도 있음 |
한 자식 노드에 한 부모 노드 | 한 자식 노드에 여러 부모 노드 가능 |
[정방 행렬] 두 정점 사이에 간선이 있을 경우 1, 아니면 0
[깊이 우선 탐색] 정점 A부터 나아가다가 없으면 되돌아와서 다른 길을 찾음
[너비 우선 탐색] 정점 A부터 가까운 정점을 찾다가 없으면 나아감
'----------고2---------- > 자료 구조' 카테고리의 다른 글
[고2 자료구조] 2학기 2차 (0) | 2024.10.29 |
---|---|
[고2 자료구조] 1학기 2차 (0) | 2024.06.13 |
[고2 자료구조] 1학기 1차 (0) | 2024.05.03 |