2024/02 3

[자료구조] 힙(Heap)

힙이란? 데이터에서 최댓값과 최솟값을 빠르게 찾기 위해 고안된 완전 이진 트리 최솟값이나 최댓값을 찾기 위해 배열을 사용하면 Ο(n)만큼 시간이 걸린다. 하지만 힙을 사용하면 O(logn)만큼 소요되므로, 배열을 사용할 때보다 빠르게 최솟값과 최댓값을 구할 수 있다. 우선순위 큐와 같이 최댓값 또는 최솟값을 빠르게 찾아야하는 알고리즘 등에 활용된다. 구현 힙의 구현은 주로 배열로 진행한다. 구현을 쉽게 하기 위하여 배열의 첫 번째 인덱스인 0은 사용되지 않는다. 특정 위치의 노드 번호는 새로운 노드가 추가되어도 변하지 않는다. 예를 들어 루트 노드의 오른쪽 노드의 번호는 항상 3이다. 힙에서의 부모 노드와 자식 노드의 관계 왼쪽 자식의 인덱스 = (부모의 인덱스) * 2 오른쪽 자식의 인덱스 = (부모의..

개발 2024.02.01

[자료구조] 트리

트리란? 정점과 간선을 이용하여 데이터 배치 형태를 추상화한 자료구조로, 그래프의 일종이다. 계층적 관계를 표현하는 비선형 자료구조로, 사이클이 없는 하나의 연결그래프이다. 트리의 특징 사이클이 없다 부모-자식의 계층적 관계로 표현된다, 루트노드를 제외한 모든 노드는 단 하나의 부모노드를 가진다. 저장된 데이터를 더 효과적으로 탐색하기 위해 사용한다. 하나의 루트노드와 0개 이상의 하위 트리로 구성되어있다. 노드가 N개인 트리는 항상 N-1개의 간선을 가진다. 트리가 될 수 없는 경우 node의 edge가 자기 자신을 향하는 경우 path에서 cycle이 생기는 경우 node가 2개 이상의 parent를 가지는 경우 서로 연결되지 않은 subtree가 존재하는 경우 트리 관련 용어 노드 (Node) 트리..

개발 2024.02.01

[자료구조] 그래프

그래프란? 그래프는 정점(Vertext)와 간선(Edge)로 이루어진 자료구조이다. 트리는 그래프의 일종이라고 볼 수 있지만, 그래프는 트리와 달리 루트노드와 부모-자식 개념이 없으며, 정점마다 간선이 있을 수도 있고 없을 수도 있다. 그래프 용어 정점(Vertex) : 노드(node) 라고도 하며 정점에는 데이터가 저장된다. (0, 1, 2, 3) 간선(Edge) : 정점(노드)를 연결하는 선으로 link, branch 라고도 부른다. 인접 정점(adjacent Vertex) : 간선에 의해 직접 연결된 정점 (0과 2은 인접정점) 단순 경로(simple path) : 경로 중에서 반복되는 정점이 없는 경우. ( 0->3->2->1 은 단순경로 ) 차수(degree) : 무방향 그래프에서 하나의 정점에..

개발 2024.02.01