파이썬(python)의 자료구조(7)
-
7. 힙(Heap)
# 1. 힙(heap) 이란?* 데이터에서 최댓값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(complt Binary Tree)* 완전 이진 트리 : 노드를 삽입할때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리# 2. 힙의 구조*** 힙은 최대값을 구하기 위한 구조(최대 힙, Max Heap)와 최소값을 구하기 위한 구조(최소 힙, Min Heap)로 분류할수 있음* 각 노드릐 값은 해당 노드의 자식 노드가 가진값보다 크거나 같다.(최대 힙의 경우)* 완전 이진 트리 형태를 가짐# 3. 힙과 이진 탐색 트리의 공통점과 차이점* 공통점 : 힙과 이진 탐색 트리는 이진트리임* 차이점 * 1. 힙은 각 노드의 값이 자식 노드보다 크거나 같음(max heap의 경우) * 2. 이진 탐색 트리는 왼쪽 자..
2024.10.21 -
6. 트리
# **1. 트리*** Node와 Branch를 이용해서 사이클을 이루지 않도록 구성한 데이터 구조* 트리 중 이진 트리(binary tree)형태의 구조로 탐색(검색) 알고리즘 구현을 위해 많이 사용됨# **2. 알아둘 용어*** Node: 트리에서 데이터를 저장하는 기본 요소(데이터와 다른 연결된 노드에 대한 Branch 정보를 포함)* Root Node: 트리 맨 위에 있는 노드* Level: 최상위 노드를 레벨0으로 했을 때 하위 Branch로 연결된 노드의 깊이를 나타냄* Parent Node: 어떤 노드의 상위 레벨에 연결된 노드* Child Node: 어떤 노드의 하위 레벨에 연결된 노드* Leaf Node: Child Node가 하나도 없는 노드* Sibling Node: 동일 Parent..
2024.10.21 -
5. 파이썬의 해시 테이블
#1. 해시 테이블(Hash Table)* 키(key)에 데이터(value)를 저장하는 데이터 구조* 파이썬에서는 해시를 별도 구현할 필요가 없음* 파이썬 딕셔너리(Dictionary) 타입이 해시 테이블의 예* key를 통해 데이터를 바로 찾을 수 있으므로 검색 속도가 빨라짐* 보통 배열로 미리 hash table 사이즈 만큼 생성 후에 사용#2. 알아둘 용어* 해시(Hash): 임의 값을 고정 길이로 변환하는 것* 해시 테이블(Hash Table): 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조* 해시 함수(Hashing Function): key에 대해 산술 연산을 이용해 데이터 위치를 찾을 수 있는 함수* 해시 값(Hash Value) 또는 해시 주소(Hash Address): key를 해..
2024.10.18 -
4. 파이썬의 더블 링크드 리스트
1. 더블 링크드 리스트- 양방향으로 연결되어 있어서 노드 탐색이 양쪽으로 모두 가능class Node: def __init__(self, data, prev=None, next=None): self.prev = prev self.data = data self.next = nextclass NodeMgmt: def __init__(self, data): self.head = Node(data) self.tail = self.head def insert(self, data): if self.head == None: self.head = Node(data) self.tail = self.head else: node = self.head ..
2024.10.15 -
3. 파이썬의 링크드 리스트
1. 링크드 리스트(Linked list)- 떨어진 곳에 존재하는 데이터를 화살표로 연결하여 관리하는 구조- C언어에서느 중요한 자료구조이지만, 파이썬에는 리스트 타입이 링크드리스트 역할도 이미 지원함-데이터의 삽입과 삭제가 매우 빠름2. 링크드 리스트 용어- 노드(Node) : 데이터 저장 단위(데이터, 포인터)로 구성- 포인터(Pointer ) : 각 노드안에서 다음이나 이전의 노드와의 연결정보를 가지고 있는 공간#링크드 리스트 구현파이썬에서는 링크드 리스트를 구현할때 클래스를 주로 활용class Node: def __init__(self,data): self.data = data self.next = None# Node 객체와 Node 객체의 연결하기(포인터 활용)node1 = Nod..
2024.10.15 -
2. 파이썬의 큐와 스택
1. 큐의 구조- 가장 먼저 넣은 데이터를 가장 먼저 꺼낼수 있는 구조이다.- 줄을 서는 행위와 유사- FIFO(First-in First-out)참고 사이트 : (https://visualgo.net/en/list)1-1.큐의 용어 - Enqueue : 큐에 데이터를 넣는 기능- Dequeue : 큐에 데이터를 꺼내는 기능 1-2. 큐의 사용- 푸시 메시지(순서대로 발송)- 멀티 태스킹을 위한 프로세스 스케줄링 방식을 구현(운영체제) 1-3. 파이썬 Queue 라이브러리를 활용하여 Queue 자료구조를 사용- Queue() : 가장 일반적인 큐 자료구조를 생성- LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조의 큐 자료구조를 생성(스택 구조와 비슷)- PriorityQueue() :..
2024.10.15