| 우선순위 큐 구현 방식 | 삽입 시간 | 삭제 시간 |
|---|---|---|
| 리스트 | O(1) | O(N) |
| 힙(heap) | O(logN) | O(logN) |

import sys
import heapq # heap 라이브러리인 heapq를 가져옴
input = sys.stdin.readline
def heapsort(iterable): # iterable = 리스트 or 튜플
h = []
result = []
# 모든 원소를 차례대로 힙에 삽입
for value in iterable: # 매개변수인 iterable(리스트)에서 하나씩 꺼내어
heapq.heappush(h, value) # h에 heap 자료구조(min-heap)로 담는다. O(logN)
# 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기
for i in range(len(h)): # 파이썬에서는 기본 min-heap으로 저장된다
result.append(heapq.heappop(h)) # 그러므로 오름차순으로 result에 담김
return result # 오름차순으로 정렬된 list를 반환
n = int(input())
arr = []
for i in range(n):
arr.append(int(input()))
res = heapsort(arr)
for i in range(n):
print(res[i])
가계도와 같은 계층적인 구조를 표현할 때 사용할 수 있는 자료구조다.
- 루트노드(root node): 부모가 없는 최상위 노드
- 단말노드(leaf node): 자식이 없는 노드
- 크기(size): 트리에 포함된 모든 노드의 개수
- 깊이(depth): 루트 노드로부터의 거리
- 높이(height): 깊이 중 최댓값
- 차수(degree): 각 노드의 (자식방향) 간선 개수
기본적으로 트리의 크기가 N일 때, 전체 간선의 개수는 N-1개 입니다.


class Node:
def __init__(self, data, left_node, right_node):
self.data = data
self.left_node = left_node
self.right_node = right_node
# 전위 순회
def pre_order(node):
print(node.data, end='-')
if node.left_node != None:
pre_order(tree[node.left_node])
if node.right_node != None:
pre_order(tree[node.right_node])
# 중위 순회
def in_order(node):
if node.left_node != None:
in_order(tree[node.left_node])
print(node.data, end='-')
if node.right_node != None:
in_order(tree[node.right_node])
# 후위 순회
def post_order(node):
if node.left_node != None:
post_order(tree[node.left_node])
if node.right_node != None:
post_order(tree[node.right_node])
print(node.data, end='-')
n = int(input()) # 노드의 개수
tree = {} # 딕셔너리로 트리 구현
for i in range(n):
data, left_node, right_node = input().split()
if left_node == "None":
left_node = None
if right_node == "None":
right_node = None
tree[data] = Node(data, left_node, right_node)
pre_order(tree['A'])
print()
in_order(tree['A'])
print()
post_order(tree['A'])
# 7
# A B C
# B D E
# C F G
# D None None
# E None None
# F None None
# G None None
# A-B-D-E-C-F-G-
# D-B-E-A-F-C-G-
# D-E-B-F-G-C-A-