Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CSS
- nodejs
- git
- computerscience
- 부트캠프
- 백준
- BFS
- 너비우선탐색
- 패스트캠퍼스
- 그리디
- LinkSnap
- 야놀자
- 알고리즘
- 프론트엔드개발자
- 국비지원
- js
- 컴퓨터공학
- html/css/js
- 컴퓨터과학
- 코딩테스트
- cpu
- 코테
- 국비지원취업
- Javascript
- 호이스팅
- DFS
- 자바스크립트
- CS
- github
- KAKAO
Archives
- Today
- Total
My Boundary As Much As I Experienced
자바스크립트로 트리(Tree) 구현하기 본문
트리 구조란?
트리(Tree)는 계층적인 구조를 나타내는 비선형 자료 구조이다.
이 구조는 노드(node)와 간선(edge)의 집합으로 이루어져 있다.
트리에서 한 노드는 부모(parent)와 그 자식(child) 노드들로 구성된다.
트리 구조에서는 최상위 노드를 루트(root) 노드라고 하고, 각 노드는 그 아래에 여러 자식 노드들을 가질 수 있다.
각 노드는 부모 노드로부터 연결된 간선을 통해 접근할 수 있다.
트리에서 각 노드는 서로 다른 자식을 가질 수 있지만, 각 노드는 하나의 부모를 가진다.
class Tree {
constructor(value) {
this.root = new Node(value);
}
}
class Node {
children = [];
constructor(value) {
this.value = value;
}
push(value) {
this.children.push(new Node(value)); // 새로운 노드를 해당 노드에 추가
}
}
// 실사용
const tree = new Tree(50);
tree.root.push(25);
tree.root.push(75);
tree.root.children[0].push(12); // 0번 노드에 12를 push
tree.root.children[0].push(37); // ...
tree.root.children[1].push(62); // 1번 노드에 62를 push
tree.root.children[1].push(87); // ...
console.log(tree);
// 결과
// 50
// 25 75
// 12 37 62 87
그리고 이 트리구조는 이진트리, AVL트리 등 여러 다른 알고리즘에도 기초로 쓰인다.
(둘 중 주로 이진트리가 많이 사용하는 알고리즘이긴 하다.)
'Algorithm > Data Structure' 카테고리의 다른 글
YAML 파일이 뭘까? (0) | 2024.04.23 |
---|---|
이진 트리의 종류와 개념 (1) | 2024.04.07 |
자바스크립트로 큐(Queue) 구현하기 (0) | 2024.03.25 |
자바스크립트로 연결리스트(Linked List) 구현하기 (0) | 2024.03.25 |