면접을 준비하면서 정리한 CS 자료들을 하나씩 올려보려 한다!
먼저 트리 자료구조이다.
트리는 값을 가지는 노드(node) 와 노드들을 연결해주는 간선(edge) 들로 이루어져 있는 자료구조이다. 모든 노드들이 0개 이상의 자식 노드를 가지며 부모-자식 관계가 존재한다.
이러한 트리가 가지는 특징이 몇가지 있는데,
이진 트리 (Binary Tree)
각 노드의 차수(자식 수)가 2 이하인 트리
이진 탐색 트리 (Binary Search Tree, BST)
순서화된 이진트리로 노드의 왼쪽 자식의 값은 부모보다 작고, 오른쪽 자식은 부모보다 큰 값을 가진다.
m원 탐색 트리 (m-way Search Tree)
최대 m개의 서브 트리를 갖는 탐색 트리, 이진 탐색 트리의 확장된 형태로 트리의 옾이를 줄이기 위해 사용한다.
ex) 4-way search tree
균형 트리 (Balanced Tree, B-Tree)
m원 탐색 트리에서 높이 균형을 유지하는 트리이다. (height balanced m-way tree)
전위 순회, pre-order
: 루드 노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 노드
1-2-4-8-9-5-10-11-3-6-13-7-14
중위 순회, in-order
: 왼쪽 자식 노드 -> 루트 노드 -> 오른쪽 자식 노드
8-4-9-2-10-5-11-1-6-13-3-14-7
후위 순회, post-order
: 왼쪽 자식 노드 -> 오른쪽 자식 노드 -> 루트 노드
8-9-4-10-11-5-2-13-6-14-7-3-1
레벨 순회, level-order
루트 노드부터 계층별로 순회
1-2-3-4-5-6-7-8-9-10-11-13-14