✔️ 루트 노드(root node) => A
부모가 없는 노드, 트리는 하나의 루트 노드만을 가진다.
✔️ 단말 노드(leaf node) => H, I, J, F, G
자식이 없는 노드, ‘말단 노드’ 또는 ‘잎 노드’라고도 부른다.
✔️ 간선(edge):
노드를 연결하는 선 (link, branch 라고도 부름)
✔️ 형제(sibling) => H와 I / F와 G
같은 부모를 가지는 노드
✔️ 노드의 크기(size) => ex) B의 크기 : 6
자신을 포함한 모든 자손 노드의 개수
✔️ 노드의 깊이(depth) => ex) D의 깊이 : 2
루트에서 어떤 노드에 도달하기 위해 거쳐야 하는 간선의 수
✔️ 노드의 레벨(level) => A의 레벨:0 / B,C의 레벨:1...
트리의 특정 깊이를 가지는 노드의 집합
✔️ 노드의 차수(degree) => ex) A의 차수 : 2 / E의 차수 : 1
하위 트리 개수 / 간선 수 (degree) = 각 노드가 지닌 가지의 수
✔️ 트리의 차수(degree of tree) => 최대인 A,B,C,D : 2
트리의 최대 차수
✔️ 트리의 높이(height) => 3
루트 노드에서 가장 깊숙히 있는 노드의 깊이
자식노드가 최대 2개까지만 붙는 트리
자식노드가 최대 3개까지 붙는 트리는 Ternary Tree 라고 한다!
이진트리의 왼쪽 부분은 현재 노드보다 작아야하고, 오른쪽 부분은 현재 노드보다 커야한다.
따라서 현재 노드보다 큰 값을 찾으려면 오른쪽 부분을, 작은 값을 찾으려면 왼쪽 부분을 탐색하면 된다!
[이진 탐색 트리 더 알아보기]
꼭 노드의 개수가 모두 다 맞다 안맞다가 아니라 치우치지 않은 상태를 균형이 맞다라고 한다.
balance가 맞는 대표적인 트리 : 2)Red-black Tree, 3)AVL Tree
마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있다.
마지막은 꼭 다 채워져 있지 않아도 되지만, 왼쪽부터 채워져 있어야 한다!
모든 노드가 0이거나 2인 트리
1이면 안된당!
모든 내부 노드가 2개의 자식을 갖고 레벨도 정확하게 떨어진다.
완벽한 파라미드 구조를 형성하고 있다.
레벨이 n인 경우, 노드의 개수는 2ⁿ-1 개이다
완전 이진 트리의 일종, 우선순위 큐를 위해 만들어진 자료구조이다.
여러 개의 갑들 중에서 최댓값이나 최솟값을 빠르게 찾아낼 수 있는 자료구조이다.
최대 힙(max heap)
부모 노드의 키값 >= 자식노드의 키값
최소 힙(min heap)
부모 노드의 키값 <= 자식노드의 키값
(1) 중위 순회(in-order traversal):
왼쪽 가지 -> 현재 노드 -> 오른쪽 가지
void inOrderTraversal(TreeNode node) {
if(node != null) {
inOrderTraversal(node.left);
visit(node);
inOrderTraversal(node.right);
}
}
(2) 전위 순회(pre-order traversal):
현재 노드 -> 왼쪽 가지 -> 오른쪽 가지
void preOrderTraversal(TreeNode node) {
if(node != null) {
visit(node);
preOrderTraversal(node.left);
preOrderTraversal(node.right);
}
}
(3) 후위 순회(post-order traversal):
왼쪽 가지 -> 오른쪽 가지 -> 현재 노드
void postOrderTraversal(TreeNode node) {
if(node != null) {
postOrderTraversal(node.left);
postOrderTraversal(node.right);
visit(node);
}
}
.
1) 비선형 구조:
<선형 자료구조>
하나의 자료 뒤에 하나의 자료가 존재하는 것
1:1로 이루어진 관계
배열과 리스트가 대표적이고 더 나아가서 스택, 큐도 이에 해당된다.
<비선형 자료구조>
하나의 자료 뒤에 여러개의 자료가 존재할 수 있는 것
1:N으로 이루어진 관계
트리와 그래프가 대표적이며 계층적 구조를 나타내기에 적절하다.
2) Red-black Tree:
3) AVL Tree:
참고자료
1) https://gmlwjd9405.github.io/2018/08/12/data-structure-tree.html
2) https://velog.io/@humblechoi/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%ED%8A%B8%EB%A6%AC%EC%99%80-%ED%9E%99
3) https://haenny.tistory.com/345
4) 레드-블랙트리
https://ko.wikipedia.org/wiki/%EB%A0%88%EB%93%9C-%EB%B8%94%EB%9E%99_%ED%8A%B8%EB%A6%AC
5) AVL 트리
https://ko.wikipedia.org/wiki/AVL_%ED%8A%B8%EB%A6%AC