Tree
2021. 5. 30. 16:34ㆍStudy/CS
트리는 스택이나 큐 같은 선형 구조가 아닌 비선형 자료구조이다.
계층적 관계를 표현한다.
삽입 삭제 같은 사고보다는 자료구조 자체로 바라보는 것이 좋다.
- Binary Tree
- 자식 노드가 최대 두 개인 노드들로 구성된 트리
- 층별로 level을 표현하고 최고레벨을 height라 한다.
- 포화 이진 트리(Perfect Binary Tree)
- 모든 레벨이 꽉 찬 이진트리
- 완전 이진 트리(Complete Binary Tree)
- 왼쪽부터 차례로 채워져 있는 이진트리
- 이진 힙(Binary Heap)
- Max Heap
- 각 노드의 값이 해당 children 보다 크거나 같음
- 최대값을 찾을 때 O(1)
- Min Heap
- 각 노드의 값이 해당 children 보다 작거나 같음
- 최소값을 찾을 때 O(1)
- 삽입 삭제?
- Max Heap
- 이진 힙(Binary Heap)
- 왼쪽부터 차례로 채워져 있는 이진트리
- 정 이진 트리(Full Binary Tree)
- 모든 노드가 0개 혹은 2개의 자식을 가진 트리
- 포화 이진 트리(Perfect Binary Tree)
- BST (Binary Search Tree)
- 이진 트리의 일종이다.
- 노드에 저장된 키는 유일하다
- 부모의 키가 왼쪽 자식 노드보다 크다
- 부모의 키가 오른쪽 자식 노드보다 작다.
- 왼쪽과 오른쪽 서브트리도 이진 탐색트리이다.
- 트리의 높이가 하나씩 증가할때마다 노드의 수가 두배씩 증가하므로 탐색연산은 O(logN) = O(h)
- Worst Case : 편향트리가 된다면, O(n) 이 될수있다.
- Rebalancing : Red-Black Tree
- Red-Black Tree
- BST를 기반으로 하는 자료구조이다.
- Search, Insert, Delete 모두 O(logN)의 시간복잡도가 소요된다.
- 노드 개수 대비 depth를 최소화하는 것이 핵심이다. (완전 이진 트리와 depth가 같음. 구조는 다르다)
- 각 노드는 Red or Black 의 색깔을 갖는다
- Root = black
- leaf node = red
- 노드가 red 이면 자식은 모두 black 이다
- 각 노드에 대해서 descendant leaves 까지의 단순 경로는 모두 같은 수의 black node를 포함하고 이를 Black-Height라 한다. ex) 노드 A로 부터 A를 포함하지 않은 leaf node 까지의 simple path 상에 있는 black node의 개수는 같고 이를 Black-Height라 한다.
- 삽입
- 삽인된 노드를 Red로 저장한다. - Black-Height 변경을 최소화하기 위해
- 위의 특성에 위배될 시에 색깔을 조정하고 Black-Height에 위배되었다면 rotation을 통해 height를 조정한다.
- 삭제
- 지워진 노드의 색이 black이면 Black-Height가 감소한 경로에 black node가 1개 추가되도록 rotation하고 노드의 색깔을 조정한다.
- 지워진 노드의 색이 red이면 그대로 유지한다.
'Study > CS' 카테고리의 다른 글
OSI 7계층 (0) | 2021.06.01 |
---|---|
Graph (0) | 2021.05.30 |
Stack / Queue (0) | 2021.05.30 |
Array vs List (0) | 2021.05.30 |
프로세스 동기화 (0) | 2021.05.29 |