트리 ( Tree )
트리는 계층적인 구조를 표한할 때 유용하게 사용할 수 있는 자료구조입니다.
[ 트리 관련 용어 설명 ]
루트 노드 (root node) | 부모가 없는 최상위 노드입니다. |
단말 노드 (leaf node) | 자식이 없는 노드를 말합니다. |
크기 (size) | 트리에 포함된 모든 노드의 개수입니다. |
깊이 (depth) | 루트노드부터의 거리를 말합니다. |
높이 (height) | 깊이 중 최댓값을 의미합니다. |
차수 (degree) | 자식 방향의 간선갯수를 의미합니다. |
이진 탐색 트리 ( Binary Search Tree )
이진 탐색이 동작할 수 있도록 고안된 효율적인 탐색이 가능한 자료구조입니다.
이진 탐색 트리의 탐색
37은 30보다 크기 때문에 오른쪽 간선을 탑니다.
37은 48보다 작기 때문에 왼쪽 간선을 탑니다.
37을 만나서 탐색이 종료됩니다.
"이진 탐색 트리의 탐색은 이상적인 경우 O(log n)의 시간복잡도를 가집니다." ( 좌 우 밸런스가 잘 잡힌 경우 )
트리의 순회 ( Tree Traversal )
트리 자료구조에 포함된 노드를 한 번씩 장문하는 방법을 의미합니다.
1. 전위 순회 (pre-order traverse): 루트를 먼저 방문합니다.
2. 중위 순회 (in-order traverse): 왼쪽 자식을 방문한 뒤에 루트를 방문합니다.
3. 후위 순회 (post-order traverse): 오른쪽 자식을 방문한 뒤에 루트를 방문합니다.
전위 순회 pre-order | A B D E C F G |
중위 순회 in-order | D B E A F C G |
후위 순회 post-order | D E B G G C A |
'알고리즘 공부' 카테고리의 다른 글
[알고리즘] 에라토스테네스의 체 (0) | 2022.05.20 |
---|---|
Least Recently Used 자료구조 구현 Java (0) | 2022.05.18 |
[자료구조] 트라이(Trie) (0) | 2022.05.05 |
프로그래머스 스택/큐 : [프린터] JAVA 풀이 (0) | 2022.05.02 |
프로그래머스 3단계/효율성 : [숫자 게임] Java 풀이 (0) | 2022.05.01 |