탐색/검색이란
무엇인가를 찾는 의미이며 컴퓨터에서는 데이터를 찾는 의미
순차 탐색
자기 구성 순차 탐색
전진 이동법
전위법
ex) 3을 선택 시
빈도 계수법
이진 탐색
가운데 값을 찾습니다.
선택 된 값과 찾고자 하는 값을 비교 합니다.
작다면 왼쪽 편의 가운데 값을 선택합니다.
반복합니다.
1을 찾았습니다.
트리 형태
레드 블랙 트리
한쪽으로 치우친 균형적이지 않은 트리 형태
레드 블랙 트리의 균형을 유지하는 규칙
레드 블랙에서의 말단(잎) NIL
NIL은 이해를 돕기 위한 가상의 공간을 차지 않는 데이터 : 단말(잎)은 항상 검은색이라는 규칙을 항상 지킴
NIL 변수를 전역으로 선언하고 이를 같은 공간을 공유하는 더미 노드
레드 블랙 트리의 연산을 위한 '회전'
레드 블랙 트리의 삽입
레드 블랙 트리의 삽입의 '후처리'
1. 삼촌(형제) 노드가 빨간색인 경우
2. 삼촌(형제) 노드가 검은색이고 새로 삽입한 노드가 부모 노드의 오른쪽 자식인 경우
3. 삼촌(형제) 노드가 검은색이고 새로 삽입한 노드가 부모 노드의 왼쪽 자식인 경우
부모 노드를 검은색으로, 할아버지 노드를 빨간색으로 변경하고 할아버지 노드를 우회전
레드 블랙 트리의 삭제
레드 블랙 트리의 '후처리'
부모를 삭제하고 자식을 올려도 5번 규칙을 위반하게 됩니다.
5번 위반이라는 문제를 쉽게 풀기 위해 이중 흑생이라는 문제를 풀기 위한 개념이 등장합니다.
5번 규칙은 지켰으나 1번 규칙을 위반하게 됩니다.
이중 흑색이라는 빨간색도 검은색도 아니게 됩니다.
1번 규칙을 지키기 위해서는 4가지 경우를 고려합니다.
(이중 흑색 노드가 부모 노드의 왼쪽 자식인 경우에 한함/ 오른쪽 자신인 경우 반대로(왼쪽/오른쪽) 변경)
1. 형제가 빨간색인 경우
2. 형제가 검은색이고
2-1. 형제의 양쪽 자식이 모두 검은색인 경우
2-2. 형제의 왼쪽 자식은 빨간색, 오른쪽 자식은 검은색인 경우
2-3. 형제의 오른쪽 자식이 빨간색인 경우
1. 형제가 빨간색인 경우
부모를 삭제하고 이증 흑색으로 변경합니다. 규칙 1번 위반입니다.
부모 노드를 빨간색으로, 형제 노드를 검은색으로 변경합니다.
부모를 기준으로 좌회전하면 새로운 형제가 검은색이 됩니다.
현재 상태는 2-3입니다.
2-1. 형제가 검은색이고 형제의 양쪽 자식이 모두 검은색인 경우
2-2. 형제가 검은색이고 형제의 왼쪽 자식은 빨간색, 오른쪽 자식은 검은색인 경우
2-3. 형제가 검은색이고 형제의 오른쪽 자식이 검은색인 경우
소스는 많아서 깃허브에 올렸습니다.
레드 블랙 트리는 C 소스만 있습니다.
'개발(합니다) > 컴퓨터 일반&CS' 카테고리의 다른 글
[알고리즘]해시 테이블(Hash Table) (0) | 2019.01.08 |
---|---|
[알고리즘]우선순위 큐와 힙 (0) | 2019.01.07 |
[알고리즘]정렬 알고리즘(버블, 삽입, 퀵) (0) | 2019.01.04 |
[자료구조]트리(Tree) (0) | 2019.01.03 |
[자료구조]큐(Queue) (0) | 2019.01.02 |