그래프 노드(node)와 그 노드들을 연결하는 간선(edge)으로 이루어진 자료 구조입니다. 그래프는 현실 세계에서 다양한 상호 관계를 표현하는데 사용됩니다. 예를 들면 지도에서 도시들을 노드로, 도로를 간선으로 표현하는 것이 그래프의 한 예입니다. JavaScript에서 그래프를 구현하는 방법 중 가장 일반적인 두 가지 방법은 "인접 행렬"과 "인접 리스트"입니다. 인접 행렬 (Adjacency Matrix) 인접 행렬은 2차원 배열로 그래프의 연결 정보를 표현합니다. 노드 간 연결 여부를 행렬의 값으로 표현하며, 노드 수가 N개인 그래프라면 NxN 크기의 행렬이 필요합니다. 예를 들어, 노드 1과 노드 2가 간선으로 연결되어 있다면, 인접 행렬의 1행 2열과 2행 1열에 해당하는 값에 연결 정보를 표..
트리(Tree) 계층적인 구조를 표현하는 추상 자료형입니다. 트리는 노드들의 집합과 이들을 연결하는 간선들의 집합으로 구성되며, 한 노드가 다른 노드를 가리키는 방향성을 가진다는 점에서 그래프의 한 종류라고 할 수 있습니다. 트리에서는 노드가 자식 노드를 여러 개 가질 수 있지만, 한 노드가 여러 부모 노드를 가질 수는 없습니다. 루트(Root): 트리의 최상위 노드입니다. 트리는 하나의 루트 노드만을 가집니다. 부모(Parent): 어떤 노드의 직속 상위 노드를 그 노드의 '부모'라고 합니다. 자식(Child): 어떤 노드의 직속 하위 노드를 그 노드의 '자식'이라고 합니다. 형제(Sibling): 같은 부모 노드를 공유하는 노드들을 '형제'라고 합니다. 리프 노드(Leaf Node): 자식이 없는 노..
큐(queue) 데이터 컬렉션을 처리하는 데 사용되는 또 다른 추상 데이터 유형(ADT)입니다. 큐는 컴퓨터과학에서 흔히 사용되는 자료구조 중 하나입니다. 큐는 특정한 규칙에 따라 항목들을 추가하거나 제거하는 리스트와 유사합니다. 이러한 규칙은 선입선출(FIFO, First In First Out)입니다. 즉, 가장 먼저 큐에 추가된 항목이 가장 먼저 제거됩니다. enqueue: 큐의 끝에 항목을 추가합니다. dequeue: 큐의 맨 앞에 있는 항목을 제거하고 반환합니다. front: 큐의 맨 앞에 있는 항목을 조회합니다. 큐에서 항목을 제거하지는 않습니다. isEmpty: 큐가 비어 있는지 확인합니다. size: 큐에 있는 전체 항목 수를 반환합니다. class Queue { constructor() ..
스택(stack) 데이터 컬렉션을 처리하는 데 사용되는 추상 데이터 유형(ADT)입니다. 자료구조에 대해 말하면 스택은 컴퓨터과학에서 매우 중요한 부분입니다. 스택은 특정한 규칙에 따라 항목들을 추가하거나 제거하는 리스트와 유사합니다. 이러한 규칙은 후입선출(LIFO, Last In First Out)입니다. 즉, 가장 마지막에 스택에 추가된 항목이 가장 먼저 제거됩니다. 스택의 핵심 연산은 다음과 같습니다: push: 스택의 맨 위에 항목을 추가합니다. pop: 스택의 맨 위에 있는 항목을 제거하고 반환합니다. peek/top: 스택의 맨 위에 있는 항목을 조회합니다. 스택에서 항목을 제거하지는 않습니다. isEmpty: 스택이 비어 있는지 확인합니다. class Stack { constructor()..