[Data Structures] 기본 자료구조 개념

스택과 큐


스택

스택이란 한 쪽 끝에서만 항목을 삭제하거나 새로운 item을 저장하는 자료구조이다.

push: 새 item을 삽입하는 연산

pop: Top item을 삭제하는 연산

스택은 후입 선출(Last-In First-Out, LIFO)이다.

큐란 삽입과 삭제가 양 끝에서 각각 수행되는 자료구조, 즉 먼저 들어온 데이터가 먼저 나가는 자료구조이다.

큐는 선입 선출(First-In First-Out, FIFO)이다.

삽입은 큐의 후단(rear)에서, 삭제는 전단(front)에서 이루어진다.

이진 트리와 이진 힙


트리 용어

루트(Root) : 트리의 최상위에 있는 노드

자식(Child) : 노드 하위에 연결된 노드

부모(Parent) : 노드의 상위에 연결된 노드

이파리(Leaf) : 자식 없는 노드, 외부 노드

형제(Sibling) : 동일한 부모를 가지는 노드

조상(Ancestor) : 루트까지의 경로상에 있는 모든 노드

후손(Descendant) : 노드 아래로 매달린 모든 노드

서브 트리(Subtree) : 노드 자신과 후손으로 구성된 트리

레벨(Level) : 루트는 레벨 1, 아래 층으로 내려가며 레벨 1씩 증가, 레벨은 깊이(Depth)와 동일

높이(Height) : 트리의 최대 레벨

키(Key) : 탐색에 사용되는 노드에 저장된 정보

내부 노드(internal node) : 이파리가 아닌 노드

외부 노드(external or terminal node) : 이파리

자식 노드의 개수를 노드의 차수

모든 이파리의 노드는 자식이 없어서 0차 노드

이진 트리

포화 이진 트리(Perfect Binary Tree): 모든 이파리의 깊이가 같고 각 내부 노드가 2개의 자식을 가지는 트리

완전 이진트리(Complete Binary Tree): 마지막 레벨을 제외한 각 레벨이 노드로 꽉 차있고, 마지막 레벨에는 노드가 왼쪽부터 빠짐없이 채워진 트리

이진 힙

이진 힙은 완전 이진트리로서 부모의 우선순위가 자식의 우선순위보다 높은 자료구조

우선순위 큐(Priority Queue)를 구현하는 가장 기본적인 자료구조

우선순위 큐(Priority Queue) : 가장 높은 우선순위를 가진 항목에 접근 및 삭제하거나, 임의의 우선순위를 가진 항목의 삽입을 지원하는 자료구조

스택이나 큐도 일종의 우선순위 큐

스택: 가장 마지막으로 삽입된 항목이 가장 높은 우선순위를 가지므로, 최근 시간일수록 높은 우선순위 부여

큐: 먼저 삽입된 항목이 우선순위가 더 높다. 따라서 이른 시간일수록 더 높은 우선순위 부여 이진 힙의 종류

최소 힙 : 키가 작을수록 높은 우선순위

최대 힙 : 키가 클수록 더 높은 우선순위

이진 힙 연산의 수행 시간

가장 높은 우선순위를 접근하는 시간 O(1)

이진 힙에서 삽입과 삭제는 힙 속성을 회복시키기 위해 각각 O(logn)

Leave a comment