본문 바로가기
algorithm/자료구조

스택(Stack), 큐(Queue), 트리(Tree)

by yongfront 2024. 2. 22.
반응형
SMALL

스택(Stack)

스택은 후입선출(LIFO, Last-In-First-Out) 방식의 자료 구조입니다. 가장 마지막에 추가된 요소가 가장 먼저 제거됩니다. 자바스크립트에서 스택은 배열을 통해 쉽게 구현할 수 있습니다. 배열의 push 메서드로 요소를 스택에 추가하고, pop 메서드로 가장 마지막에 추가된 요소를 제거할 수 있습니다.

let stack = [];
stack.push(1); // 스택에 1 추가
stack.push(2); // 스택에 2 추가
console.log(stack.pop()); // 가장 마지막에 추가된 2를 제거하고 출력
console.log(stack); // 남아 있는 스택의 요소 확인

큐(Queue)

큐는 선입선출(FIFO, First-In-First-Out) 방식의 자료 구조입니다. 가장 먼저 추가된 요소가 가장 먼저 제거됩니다. 자바스크립트에서 큐 역시 배열을 사용하여 구현할 수 있지만, 배열의 push 메서드로 요소를 추가하고, shift 메서드로 가장 처음에 추가된 요소를 제거하는 방식으로 사용합니다.

let queue = [];
queue.push(1); // 큐에 1 추가
queue.push(2); // 큐에 2 추가
console.log(queue.shift()); // 가장 처음에 추가된 1을 제거하고 출력
console.log(queue); // 남아 있는 큐의 요소 확인

트리(Tree)

트리는 계층적 관계를 표현하는 비선형 자료 구조입니다. 트리는 노드(Node)들과 노드들을 연결하는 간선(Edge)들로 구성됩니다. 트리의 가장 상위에 있는 노드를 루트(Root) 노드라고 합니다. 트리에서는 한 노드가 여러 개의 자식 노드를 가질 수 있으며, 각 노드는 하나의 부모 노드만을 가집니다(루트 노드 제외).

자바스크립트에서는 객체와 배열을 활용하여 트리 구조를 구현할 수 있습니다. 예를 들어, 간단한 이진 트리는 다음과 같이 구현할 수 있습니다.

function TreeNode(val) {
    this.val = val;
    this.left = this.right = null;
}

let root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);

이와 같이, 자바스크립트를 사용하여 다양한 자료 구조를 구현하고 활용할 수 있습니다. 각 자료 구조는 특정 알고리즘 문제를 해결하거나 애플리케이션의 특정 요구 사항을 충족시키는 데에 적합합니다.

728x90
반응형
LIST