record : 개체에 대해 수집된 모든 정보를 포함하고 있는 저장 단위
field : 레코드에서 각각의 정보를 나타내는 부분
search key / key : 다른 레코드와 중복되지 않도록 각 레코드를 대표할 수 있는 필드 (하나 또는 두개이상)
search tree : 각 노드가 규칙에 맞게 하나씩의 키를 가지고 있고 이를 통해 해당 레코드가 저장된 위치를 알 수 있다.
트리의 자료구조 : 배열 또는 포인터를 이용한 구조체
Binary Search Tree (BST)
1. 각 노드는 서로 다른 키 값을 하나씩 갖는다.
2. 최상위 레벨에 루트 노드가 있고 각 노드는 최대 두 개의 자식 노드를 갖는다.
3. 임의의 노드의 키 값은 자신의 왼쪽에 있는 모든 노드의 키 값보다 크고, 오른쪽에 있는 모든 노드의 키 값보다 작다.
검색알고리즘
treeSearch(t,x) { if (t=NIL or key[t] = x) then return t; if (x < key[t]) then return treeSearch(left[t], x); else return treeSearch(right[t], x); }
삽입알고리즘
treeInsert(t, x) { if (t=NIL) then { key[r] ← x; left[r] ← NIL; right[r] ← NIL; return r; } if (x < key(t)) then {left[t] ← treeInsert(left[t], x); return t;} else {right[t] ← treeInsert(right[t], x); return t;} }
검색과 삽입의 수행 시간은 $\Theta(logn)$
삭제알고리즘
case1) r이 leaf node인 경우 :
case2) r의 자식 노드가 하나인 경우
case3) r의 자식 노드가 두 개인 경우
sketchDelete(t, r) { if (r이 leaf node) then 그냥 r을 버린다; else if (r의 자식이 하나만 있음) then r의 부모가 r의 자식을 직접 가리키도록 한다; else { r의 오른쪽 서브트리의 최소원소노드 s를 삭제하고, s를 r자리에 놓는다; } }
Red-Black Tree (RB Tree)
항상 균형이 잡힌 BST를 만들기 위한 자료구조
1. 루트는 블랙이다.
2. 모든 리프(NIL)은 블랙이다.
3. 노드가 레드이면 그 노드의 자식은 반드시 블랙이다.
4. 루트 노드에서 임의의 리프 노드에 이르는 경로에서 만나는 블랙 노드의 수는 모두 같다.
'쉽게 배우는 알고리즘' 카테고리의 다른 글
07 해시 테이블 (1) | 2018.10.21 |
---|---|
05 선택 알고리즘 (0) | 2018.10.21 |
04 정렬 (2) (0) | 2018.10.21 |
04 정렬 (1) (0) | 2018.10.21 |
03 점화식과 알고리즘 복잡도 분석 (0) | 2018.10.20 |