delpho
자료구조에 대하여 - 2 본문
_1. Stack, Queue에 대해서 설명해주세요.
[ Stack 스택 ]
- 데이터를 차곡차곡 쌓아 올린 형태의 자료구조
- 후입선출(LIFO, Last In First Out) 특성
- 삽입과 삭제되는 방향이 같음
[ Stack 스택 활용 예시 ]
- 웹 브라우저 뒤로가기
- 실행 취소
- 수식의 괄호 검사
[ Queue 큐 ]
- 대기열 형태의 자료구조
- 선입선출(FIFO, First In First Out) 특성
- 한쪽 끝에서 삽입 작업이, 다른쪽 끝에서는 삭제 작업이 이루어짐
[ Queue 큐 활용 사례 ]
- 우선순위가 같은 대기열
- 프로세스 관리
_2. Heap, Priority Queue에 대해서 설명해주세요.
[ Heap 힙 ]
- 완전 이진 트리의 한 종류
- 여러 개의 값들 중에서 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조
- 부모의 값은 자식보다 항상 크거나 작아야 함
- 최대 힙, 최소 힙 두 종류
- key(parent) >= key(child)
- key(parent) <= key(child)
- 최대값이나 최소값을 O(1)로 찾기 가능
- 삽입 삭제 = O(logN)
- 중복된 값 허용
- 이진 탐색 트리는 허용 X
[ Heap 힙 표현 ]
- 완전 이진 트리이기때문에 배열로 표현하기 매우 좋음
- 트리의 배열 표현의 경우 👉 계산 편하게 하기 위해 index = 1 부터 사용
- 힙에서의 부모 노드와 자식 노드의 관계
- 왼쪽 자식의 인덱스 👉 (부모의 인덱스) * 2
- 오른쪽 자식의 인덱스 👉 (부모의 인덱스) * 2 + 1
- 부모의 인덱스 👉 (자식의 인덱스) / 2
[ Priority Queue 우선순위 큐 ]
- 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나오는 자료구조
- Heap 자료구조를 이용하여 구현
[ Priority Queue 우선순위 큐 구현 방법당 시간 복잡도 차이]
_3. Tree, Binary Tree, BST, AVL Tree에 대해서 설명해주세요.
[ Tree 트리 ]
- 비선형 구조이며 원소들간 계층 관계를 가지며, 원소들 간에 1:n 관계를 가지는 자료구조
- 노드(node) 👉 트리의 원소
- 간선(edge) 👉 노드와 노드를 연결하는 선
- 루트 노드(root node) 👉 트리의 최상위 노드
- 차수(degree)
- 노드의 차수 👉 원소에 연결된 자식 노드 수
- 트리의 차수 👉 노드 차수 중 가장 큰 값
- 높이
- 노드의 높이 👉 루트에서 노드에 이르는 간선의 수
- 트리의 높이 👉 트리에 있는 노드 높이 중 가장 큰 값
[ Binary Tree 이진 트리 ]
- 최대 차수가 2인 트리
- 높이가 h인 이진트리가 가질 수 있는 노드의 최소 개수 👉 h+1
- -------------------------------------------------------의 최대 개수 👉 2^(h+1) + 1
- 종류
- 포화 이진 트리
- 모든 레벨의 노드가 포화 상태로 차 있는 이진 트리
- 완전 이진 트리
- 노드 번호 1번부터 n번까지 빈자리가 없는 트리
- 편향 이진 트리
- 높이 h에 대한 최소 개수의 노드를 가지면서 한쪽 방향의 자식 노드만을 가진 이진 트리
- 포화 이진 트리
[ Binary Search Tree 이진 탐색 트리 ]
- 노드의 왼쪽 가지에는 노드의 값보다 작은 값들만 있고, 오른쪽 가지에는 큰 값들만 있도록 구성한 이진 트리의 일종
- 이진 탐색의 아이디어를 채용한 자료구조
- 정렬된 특징을 이용해 반씩 쪼개가며 탐색 -> 탐색 횟수 낮아짐
- 그럼 이진 탐색 사용하면 되는거 아닌가요?
- 이진 탐색을 사용하는 배열은 조회에만 강점 -> 삽입 삭제 어려움!
- 중복된 키 허용 X
- 중위 순회를 사용하면 모든 키를 정렬된 순서로 가져올 수 있음
[ AVL Tree 트리 ]
- 스스로 균형을 잡는 이진 탐색 트리
- 한쪽으로 치우친 편향 이진트리가 되면 트리의 높이가 높아지기 때문에 이를 방지하고자 높이 균형을 유지해줌
- 이진 탐색 트리의 속성을 가짐
- 왼쪽 오른쪽 서브 트리의 높이 차이가 최대 1
- 1보다 커지면 회전(rotation을 통해 균형을 잡아줌)
[ Balance Factor (BF) ]
- BF 👉 왼쪽 서브트리의 높이 - 오른쪽 서브트리의 높이
- BF가 1 👉 왼쪽 서브트리가 오른쪽 서브트리보다 높이가 한단계 높다는 것을 의미
- BF가 0 👉 왼쪽 서브트리와 오른쪽 서브트리의 높이가 같다는 것을 의미
- BF가 -1 👉 왼쪽 서브트리가 오른쪽 서브트리보다 높이가 한단계 낮다는 것을 의미
[ 회전 (rotation ]
- 삽입, 삭제 시 👉 불균형 상태 (BF가 -1,0,1이 아닐때) AVL트리는 불균형 노드를 기준으로 서브트리의 위치를 변경하는 회전 작업 수행
1. LL (Left Left) case
2. RR (Right Right) case
3. LR (Left Right) case
4. RL (Right Left) case
[ AVL 트리의 시간복잡도 ]
출처
[자료구조] 스택 (STACK), 큐(QUEUE) 개념/비교 /활용 예시
[자료구조] 스택 (STACK), 큐(QUEUE) 개념/비교 /활용 예시/ 실생활 활용 스택 (STACK)이란? 📌 스택의 개념 스택(stack)이란 쌓아 올린다는 것을 의미한다. 따라서 스택 자료구조라는 것은 책을 쌓는 것
devuna.tistory.com
[자료구조] 스택(Stack)과 큐(Queue)에 대해서 알아보자!
📌 스택(Stack)이란 무엇일까? 스택(Stack)은 "쌓다"라는 의미로, 데이터를 차곡차곡 쌓아 올린 형태의 자료구조입니다. 조금 더 설명하자면, 위의 사진과 같이 데이터가 순서대로 쌓이며 가장 마지
jud00.tistory.com
https://namu.wiki/w/%ED%9E%99%20%ED%8A%B8%EB%A6%AC
힙 트리 - 나무위키
최댓값 혹은 최솟값이 저장된 루트 노드만 제거할 수 있다. 루트 노드를 제거한다.루트 자리에 가장 마지막 노드를 삽입한다.[3]올라간 노드와 그의 자식 노드(들)와 비교한다.조건에 만족하면
namu.wiki
https://velog.io/@chayezo/%ED%9E%99-Heap
힙 Heap / 우선순위 큐(Priority Queue)
우선순위 큐를 위해 만들어진 자료구조, heap일반적인 큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조이다.즉, 어떤 부가적인 조건 없이 먼저 들어온 데이터
velog.io
https://chanhuiseok.github.io/posts/ds-4/
자료구조 - 우선순위 큐(Priority Queue)와 힙(heap)
컴퓨터/IT/알고리즘 정리 블로그
chanhuiseok.github.io
https://suyeon96.tistory.com/31
[자료구조] 우선순위 큐와 힙 (Priority Queue & Heap)
1. 우선순위 큐 1.1 우선순위 큐란? 큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조이다. 우선순위 큐(Priority Queue)는 먼저 들어오는 데이터가 아니라, 우선순위
suyeon96.tistory.com
https://www.youtube.com/watch?v=P-FTb1faxlo
https://ratsgo.github.io/data%20structure&algorithm/2017/10/22/bst/
이진탐색트리(Binary Search Tree) · ratsgo's blog
이번 글에서는 자료구조의 일종인 이진탐색트리(Binary Search Tree)에 대해 살펴보도록 하겠습니다. 이 글은 고려대 김선욱 교수님, 그리고 역시 같은 대학의 김황남 교수님 강의와 위키피디아를 정
ratsgo.github.io
https://code-lab1.tistory.com/10
[자료구조] 이진탐색트리(Binary Search Tree)의 개념, 이해 | C언어 이진탐색트리 구현
이진탐색트리(Binary Search Tree)이란? 이진탐색트리란 다음과 같은 특징을 갖는 이진트리를 말한다. ( #이진트리 - 각 노드의 자식 노드가 최대 2개인 트리) 1. 각 노드에 중복되지 않는 키(key)가 있다
code-lab1.tistory.com
https://yoongrammer.tistory.com/71
[자료구조] 이진 탐색 트리 (BST, Binary Search Tree)
목차 이진 탐색 트리 (BST, Binary Search Tree) 이진 탐색 트리란 정렬된 이진트리로써 다음과 같은 속성을 가지고 있습니다. 노드의 왼쪽 하위 트리에는 노드의 키보다 작은 키가있는 노드 만 포함됩
yoongrammer.tistory.com
https://yoongrammer.tistory.com/72#%ED%9A%8C%EC%A0%84_(rotation)
[자료구조] AVL 트리(Tree)
목차 AVL 트리(Tree) 개념 및 구현 AVL 트리는 스스로 균형을 잡는 이진 탐색 트리입니다. 트리의 높이가 h일 때 이진 탐색 트리의 시간 복잡도는 O(h)입니다. 한쪽으로 치우친 편향 이진트리가 되면
yoongrammer.tistory.com
https://mommoo.tistory.com/101
[자료구조] 이진탐색트리
안녕하세요. 오늘은 이진 탐색트리 에 대해 포스팅 합니다. 이진 탐색트리 란 이진 탐색트리 는 이진 탐색(Binary Search) 의 아이디어를 채용한 자료구조 입니다. 이진 탐색 은 원소가 정렬되어 있
mommoo.tistory.com
'CS' 카테고리의 다른 글
운영체제에 대하여 - 2 (0) | 2022.07.24 |
---|---|
운영체제에 대하여 - 1 (0) | 2022.07.24 |
자료구조에 대하여 - 1 (0) | 2022.07.05 |
네트워크에 대하여 - 3 (0) | 2022.06.29 |
네트워크에 대하여 - 2 (0) | 2022.06.25 |