트리
벌써 마지막 장에 와버렸습니다. 마지막은 트리에 대해서 공부합니다. 우선 트리는 루트, 리프, 비단말 노드, 자식, 부모, 형제, 조상, 자손, 레벨, 차수, 서브트리, 빈 트리 등의 용어를 사용합니다. 트리 구조는 다단계랑 비슷합니다. 루트: 다단계 맨 윗 사람 리프: 가장 마지막에 있는 사람 비단말 노드: 리프를 제외한 노드 자식: 아래쪽 노드 부모: 윗쪽 노드 형제: 부모가 같은 노드 조상: 윗쪽으로 가며 만나는 모든 노드 자손: 아래쪽으로 가며 만나는 모든 노드 레벨: 루트 레벨 0 -> 에서 아래쪽으로 가며 1씩 증가함 차수: 노드가 갖는 자식의 수 높이: 루트 -> 리프의 거리 서브트리: 한 노드를 루트로 한 새로운 트리 빈 트리: 노드, 가지가 없는 트리 순서트리: 형제 간 순서 관계가 있음..
정렬 알고리즘 - 2
오늘은 남은 셸 정렬, 퀵 정렬, 병합 정렬, 힙 정렬, 도수 정렬을 정리합니다. :) 1. 셸 정렬 단순 삽입 정렬의 업그레이드 판입니다. (아쉽게도 백준에서 쉬운 예제를 찾지 못했습니다. 😩) 아주 쉬운 예를 들면, 단순 삽입 정렬의 겨우, [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] 배열을 정렬할 때, 바로 옆의 값을 확인하고 교환하다보니 54번의 저장이 이루어집니다. #예시 코드 및 결과 import sys n, k = 10, 54 a = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] n = len(a) count = 0 flag1 = False for i in range(1, n): if k == 0: break j = i tmp = a[i] flag2 = False #대..