IEIP_Note

Data Structure, 자료구조

구조 설명 종류
선형 구조
Linear
데이터를 연속적으로 연결한 자료구조
자료를 구성하는 원소들을 하나씩 순차적으로 나열한 형태
리스트, 스택
큐, 데크
비선형 구조
Non-Linear
데이터를 비연속적으로 연결한 자료구조
하나의 자료 뒤에 여러 개의 자료가 존재할 수 있는 형태
트리, 그래프


선형 구조 / 리스트 List


선형 구조 / 스택 Stack

스택 운용 분야 설명
인터럽트 처리 현재 진행 중인 명령어 위치를 스택에 Push
인터럽트 발생 상황을 처리한 후, 인터럽트 전에 진행 중이던
명령어 위치를 스택에서 Pop 통해서 받아온다.
함수 호출
(재귀함수 포함)
함수 호출 시, 현재 진행 중인 명령어 주소를 스택에 이양한다.
후위 표현 연산 Postfix 계산할 때 사용
깊이 우선 탐색
Depth First Search
깊이 내려갈 때마다 스택에 값을 Push하고
더이상 깊이 내려갈 곳이 없으면 스택에서 POP한 node와
인접한 node를 탐색한다.

선형 구조 / 큐 Queue

Queue 응용 설명
운영체제 작업 Scheduling 작업이 자원을 할당 받기 전까지 대기
메시지 전송 메시지를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 보관

선형 구조 / 데크 Deque


비선형 구조 / 트리 Tree

Tree 용어 설명
root node 트리에서 부모가 없는 최상위 노드
트리의 시작점
root node = { A } (상단 예시 기준)
Leaf node
단일 노드
자식이 없는 노드, 트리 가장 말단에 위치함
단일 노드 = { G, H}
Level 루트 노드를 기준으로 특정 노드까지 경로 길이
D 노드의 Level = 3
Parent Node 특정 노드에 연결된 이전 레벨의 노드
DE 노드의 부모 = { B }
Child Node 특정 노드에 연결된 다음 레벨의 노드
B의 자식 = { D, E }
Sibling
형제 노드
같은 부모를 가진 노드
GHD라는 같은 부모 노드를 지닌 형제 노드이다.
Depth
깊이
루트 노드에서 특정 노드에 도달하기 위한 간선의 수
트리 깊이 = 3
Degree
차수
트리 구조에서 각 노드가 가진 가지 수 (서브 트리 개수)
D 노드의 차수 = 2

트리 순회 방법

전위 순회 설명 / 상단 이미지 활용

- 위의 이미지를 기준으로 제일 먼저 root 노드인 `A` 방문한다.
- 이어서 왼쪽 서브 트리를 `B` - `D` - `E` 순으로 방문하고
- 마지막으로 오른쪽 서브 트리를 `C` - `F` - `G` 순으로 방문한다.

=>`A` → {`Left` / `B` → `D` → `E`} → {`Right` / `C` → `F` → `G`}

중위 순회 설명 / 상단 이미지 활용

- 중위 순회는 Left - root - Right 순으로 방문하는 순회 방식이다.

- 제일 먼저 왼쪽 서브 트리를 순회하는데, 왼쪽 자식 노드인 D를 먼저 방문하고
  이어서 부모 노드인 B를 거친 뒤 다른 자식 노드인 E를 순회한다. (D → B → E)
  
- 왼쪽 서브 트리 순회를 마치면, 제일 상단의 root 노드인 A를 방문하고
  이어서 오른쪽 서브 트리 순회를 시작한다.

- 오른쪽 서브 트리도 부모 노드인 C를 먼저 방문하고
  이후 자식 노드 F → G 순으로 중위 순회한다. { Right / C → F → G}

=> 결과: D → B → E → A → F → C → G

후위 순회 설명 / 상단 이미지 활용

- 후위 순회는 Left - Right - root 순으로 방문하는 순회 방식이다.

- 제일 먼저 왼쪽 서브 트리의 단일 노드 D → E 순으로 방문하고
  이어서 부모 노드인 B를 방문한다. (D → E → B)
- 그 다음 오른쪽 서브 트리로 넘어가서, 단일 노드 F → G 순으로 방문하고
  이어서 부모 노드인 C를 방문한다. (F → G → C)
- 그리고 마지막으로 남은 제일 상단의 root 노드인 A 노드를 방문하는 후위 순회를 한다.

=> 결과: D → E → B → F → G → C → A

비선형 구조 / 그래프 Graph