[자료구조] 트리(Tree) 완벽 정리 : 개념부터 구현까지
·
공부/자료구조
참고 : GeeksForGeeks(https://www.geeksforgeeks.org/tree-data-structure/)☑️ 트리(Tree) 완벽 정리 : 개념부터 구현까지트리는 알고리즘 문제를 풀기 위해서 반드시 알아야 하는 자료구조 중 하나다. DFS, BFS 등 여러 알고리즘에서 트리가 나타나고 사용된다. 뿐만 아니라, 실제 상업 프로덕트에서도 트리 개념은 중요하게 사용된다. 기본적인 트리의 구조부터 여러가지 트리 개념에 대해서 알아보자. 먼저, 트리는 부모-자식 관계를 가지는 계층적 구조의 자료구조를 의미한다. 이름처럼 트리는 나무가 뿌리에서 시작해서 가지로 뻗어나가는 것처럼, 하나의 루트 노드에서 시작해서 여러 개의 자식 노드로 확장되는 구조를 가진다.트리는 Node와 Edge로 연결되어 ..
[자료구조] 동적 메모리 할당
·
공부/자료구조
☑️ 동적 메모리 할당동적 메모리 할당은 C언어에만 한정된 개념이 아니라, 다양한 프로그래밍 언어에서도 사용되고 있는 개념이다. 동적 메모리 할당의 내용과 사용 방법 자체는 어렵지 않다. 이 개념은 프로그램이 실행 중(런타임)에 있을 때, 필요한 시점에서 메모리를 할당 받고 필요하지 않은 시점에서 할당 받은 메모리를 반환하는 것을 의미한다. 반대되는 개념으로는 정적 메모리 할당이 있다. 🟧 동적 메모리 할당의 장점프로그램이 실행되는 동안에 원하는 크기의 메모리를 할당 받을 수 있어 유연성이 높아진다. 사용자의 입력에 따라 메모리 크기를 가지는 가변 크기의 자료구조를 구현할 수 있다. 🟧 동적 메모리 할당의 단점만약, 메모리를 할당하고 할당 해제하는 것을 까먹는다면 메모리 누수가 생긴다. 🟧 가비지 ..
[자료구조] 배열이란 무엇인가?
·
공부/자료구조
☑️ 배열이란 무엇인가?배열은 연속된 자료구조(Contiguous Data Structures)를 가지는 대표적인 예시다. 연속된 자료구조는 단일 메모리 청크에 모든 원소를 저장하며, 모든 원소의 접근 소요 시간은 일정하게 O(1)을 가진다. 또, 연속된 자료구조의 특징으로 캐시 지역성(Cache Locality)이 있는데, 이는 연속된 자료구조의 특성 상, 원소와 원소가 인접하기 때문에 주변 원소에 접근할 때 빠르게 접근할 수 있도록 원소 하나를 가져올 때, 주변 원소를 캐쉬(Cache)에 가져오는 것이다. 위의 설명한 특성들로 인해서 배열의 원소들은 각자 같은 크기의 메모리 공간을 가지는데, 이 공간들은 연속성을 가진다. 그렇기 때문에 다음과 같은 수식을 통해서 인덱스의 위치를 찾을 수 있다.배열 원..