트리가 잘 기억이 안나서 정리해본다.
트리의 용어
- root: 최상위 노드, 모든 자식들의 조상
- child(자식) 노드: 현재 노드와 연결된 하위노드
- degree(차수)
- 노드의 차수: 현재 노드가 가진 서브트리의 개수
- 트리의 차수: 노드의 차수중 가장 큰 값
- Leaf(잎): 자식이 없는 노드
- Sibling(형제) 노드: 같은 부모를 가진 노드
- Ancestor(조상) 노드: 현재 노드부터 루트노드들까지 존재하는 부모노드 집합
- Descendant(후손) 노드: 현재 노드를 조상으로 가지는 모든 하위노드 집합
- depth(깊이): 현재 노드까지 접근하기 위한 간선의 개수
- level: 같은 depth을 가진 노드의 집합
- height: 트리의 최대 레벨
이를 다음과 같은 트리에서 용어에 매칭되는 노드 혹은 값을 설명하겠다.
- root: 1번 노드
- child
- 1번노드 => 2,3
- degree:
- 1번노드 => 2번을 루트노드로 가진 서브트리, 3번을 루트노드로 가진 서브트리 => 2개
- 3번노드 => 0개
- leaf:
- 3,4,5번 노드
- Sibling
- 2번노드의 Sibling 노드: 3번
- Ancestor:
- 4번 노드의 Ancestor 노드: 2,1번 노드
- Desendant:
- 1번노드의 Desendant 노드: 2,3,4,5번 노드
- level:
- level1의 노드: 1
- level2의 노드: 2,3
- level3의 노드: 4,5
- height: 3
순회
트리내의 노드를 방문하는 과정을 순회라고 한다. 트리의 순회방식은 4가지로 다음과 같다.
- 전위순회
- 중위순회
- 후위순회
- 레벨순회
다음과 같은 정보의 트리에서 노드 방문을 순회의 방법에 따라 어떻게 방문하는 것인지를 알아보자.
- root: 1
- depth: 3
1. 전위 순회(Preorder Traverse)
- Node -> Left -> Right 순으로 방문한다.
- 현재 노드를 방문하고 인접한 Left, Right노드 들을 방문한다.
- 루트부터 탐색하면 다음과 같다. 1->2->4->5->3
2. 중위 순회(Inorder Traverse)
- Left -> Node -> Right 순으로 방문한다.
- 현재 노드가 leaf노드거나 후손 노드들을 모두 방문하여야 현재 노드를 방문한다.
- 4->2->5->1->3
3. 후위 순회(Postorder Traverse)
- Left -> Right -> Node 순으로 방문한다.
- 자식들을 모두 읽은 후에 자기 자신을 방문한다.
- 4->5->2->3->1
4. 레벨 순회(Level Order Traverse)
- 레벨이 낮은 곳부터 높은 순으로 방문
- 레벨이 낮을수록 먼저 방문한다.
- 루트노드가 존재하는 레벨부터 시작
- 같은 레벨의 노드들은 왼쪽 -> 오른쪽의 노드순으로 방문한다.
- 1->2->3->4->5
'CS' 카테고리의 다른 글
[자료구조] 해시맵 (0) | 2022.07.13 |
---|---|
[자료구조]BST, AVL트리 (0) | 2022.07.06 |
[Web]CORS (1) | 2022.06.20 |
[GoF] 2. Factory (0) | 2022.03.22 |
[GoF] Singleton (0) | 2022.03.21 |