본문 바로가기
컴퓨터공학/알고리즘

4장 트리

by Daniel.kwak 2018. 10. 15.

*완전이진트리란 차수가 2개이며 왼쪽에서부터 차곡차곡 자식을 가지고 있는 트리를 말한다.

*전위순회:루트-왼자식-오른자식 순

*중위순회:왼자식-루트-오른자식 순

*후위순회:왼자식-오른자식-루트 순

*후위순회를 응용하여 트리를 삭제할 수 있다.

*분리집합이란 교집합이 존재하지 않는 두 집합을 말한다. 목적은 해당 원소가 그 집합에 속해있는지만 알아보는 것이다. 예를 들어 서점 판매관리 프로그램을 예를 들어보면 기본 자료구조가 가격과 ISBN을 가지고 있다고 가정해보자. 이 때 한시적으로 할인 행사를 진행하려고 하는데 할인행사를 할 때마다 가격을 내리고, 다시 원래 가격으로 돌려놓기가 꽤나 부담스럽다. 이 때 자료구조에 영향을 미치지 않고, 할인행사 집합과, 일반판매 집합을 분리할 수 있다. 따라서 할인행사 집합에 포함되어있는지 여부만 알면 판매가격을 조정할 수 있고 할인행사가 끝나면 할인행사 집합을 기존 일반판매 집합에 옮기면 된다. 

*분리집합의 구조체는 부모노드를 가리키는 포인터와 데이터로 구성되어 있다.


typdef struct tagDisjointSet {
	struct tagDisjointSet* Parent;
	void* Data;
}

*분리집합의 합집합은 둘 중 하나의 부모노드를 나머지 집합의 부모노드를 가르키게 하면 된다.


'컴퓨터공학 > 알고리즘' 카테고리의 다른 글

8장 해쉬  (0) 2018.10.21
7장 우선순위 큐와 힙  (0) 2018.10.21
6장 탐색  (0) 2018.10.18
5장 정렬  (0) 2018.10.15
3장 큐  (0) 2018.10.14
2장 스택  (0) 2018.10.14