트리에는 이진 트리(Binary Tree)가 존재한다.
이진 트리: 각 노드가 최대 두 개의 자식을 갖는 트리
왼쪽 자식을 left subtree, 오른쪽 자식을 right subtree라고 한다.
이진 트리에는 정 이진 트리(full binary tree), 완전 이진 트리(complete binary tree), 포화 이진 트리(perfect binary tree)가 있다.
class Node {
constructor(value) {
this.value = value;
this.left = null;
this.right = null;
}
}
class BST {
constructor() {
this.root = null;
}
insert(value) {
const newNode = new Node(value);
if (!this.root) {
this.root = newNode;
return this;
}
let temp = this.root;
while (true) {
if (temp.value === newNode.value) return undefined;
if (newNode.value < temp.value) {
if (temp.left === null) {
temp.left = newNode;
return this;
}
temp = temp.left;
} else {
if (temp.value === null) {
temp.right = newNode;
return this;
}
temp = temp.right;
}
}
}
contain(value) {
if (this.root === null) return false;
let temp = this.root;
while (temp) {
if (value < temp.value) {
temp = temp.left;
} else if (value > temp.value) {
temp = temp.right;
} else {
return true;
}
}
return false;
}
}