Skip to content

Commit 748b54d

Browse files
committed
DS Trees Complete Course
1 parent d333758 commit 748b54d

File tree

3 files changed

+184
-0
lines changed

3 files changed

+184
-0
lines changed

7. Tree/1. BST/index.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
class Node {
2+
constructor(value) {
3+
this.value = value;
4+
this.left = null;
5+
this.right = null;
6+
}
7+
}
8+
9+
class BST {
10+
constructor() {
11+
this.root = null;
12+
}
13+
14+
insert(value) {
15+
const newNode = new Node(value);
16+
if (this.root === null) {
17+
this.root = newNode;
18+
return this;
19+
}
20+
21+
let temp = this.root;
22+
while (true) {
23+
if (newNode.value === temp.value) return undefined;
24+
if (newNode.value < temp.value) {
25+
if (temp.left === null) {
26+
temp.left = newNode;
27+
return this;
28+
} else {
29+
temp = temp.left;
30+
}
31+
} else {
32+
if (temp.right === null) {
33+
temp.right = newNode;
34+
return this;
35+
}
36+
temp = temp.right;
37+
}
38+
}
39+
}
40+
41+
includes(value) {
42+
if (!this.root) return false;
43+
44+
let temp = this.root;
45+
while (temp) {
46+
if (value < temp.value) {
47+
temp = temp.left;
48+
} else if (value > temp.value) {
49+
temp = temp.right;
50+
} else if (value === temp.value) {
51+
return true;
52+
}
53+
}
54+
return false;
55+
}
56+
}
57+
58+
const tree = new BST();
59+
tree.insert(5);
60+
tree.insert(8);
61+
tree.insert(3);
62+
tree.insert(1);
63+
tree.insert(7);
64+
tree.insert(9);
65+
console.log(tree.includes(9));

7. Tree/2. Recursion/index.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// ------------------ Example 1
2+
function countDown(number) {
3+
if (number === 0) {
4+
console.log("And finally the stopping point! 🥂");
5+
return;
6+
}
7+
8+
console.log(number);
9+
countDown(number - 1);
10+
}
11+
12+
countDown(5);
13+
14+
// ------------------ Example 2
15+
function factorial(number) {
16+
if (number === 0) {
17+
return 1;
18+
}
19+
20+
return number * factorial(number - 1);
21+
// return number === 0 ? 1 : number * factorial(number - 1);
22+
}
23+
24+
console.log(factorial(4));

7. Tree/3. Tree Traversal/index.js

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
class Node {
2+
constructor(value) {
3+
this.value = value;
4+
this.left = null;
5+
this.right = null;
6+
}
7+
}
8+
9+
class BST {
10+
constructor() {
11+
this.root = null;
12+
}
13+
14+
insert(value) {
15+
const newNode = new Node(value);
16+
if (this.root === null) {
17+
this.root = newNode;
18+
return this;
19+
}
20+
21+
let temp = this.root;
22+
while (true) {
23+
if (newNode.value === temp.value) return undefined;
24+
if (newNode.value < temp.value) {
25+
if (temp.left === null) {
26+
temp.left = newNode;
27+
return this;
28+
} else {
29+
temp = temp.left;
30+
}
31+
} else {
32+
if (temp.right === null) {
33+
temp.right = newNode;
34+
return this;
35+
}
36+
temp = temp.right;
37+
}
38+
}
39+
}
40+
41+
dfs() {
42+
let current = this.root;
43+
let queue = [];
44+
let data = [];
45+
46+
queue.push(current);
47+
48+
while (queue.length) {
49+
current = queue.shift();
50+
data.push(current.value);
51+
52+
if (current.left) queue.push(current.left);
53+
if (current.right) queue.push(current.right);
54+
}
55+
return data;
56+
}
57+
58+
dfsPreOrder(node = this.root, data = []) {
59+
if (node === null) return data;
60+
console.log("--------", data);
61+
62+
data.push(node.value);
63+
if (node.left) this.dfsPreOrder(node.left, data);
64+
if (node.right) this.dfsPreOrder(node.right, data);
65+
return data;
66+
}
67+
68+
dfsPostOrder(node = this.root, data = []) {
69+
if (node === null) return data;
70+
if (node.left) this.dfsPostOrder(node.left, data);
71+
if (node.right) this.dfsPostOrder(node.right, data);
72+
data.push(node.value);
73+
return data;
74+
}
75+
76+
dfsInOrder(node = this.root, data = []) {
77+
if (node === null) return data;
78+
this.dfsInOrder(node.left, data);
79+
data.push(node.value);
80+
this.dfsInOrder(node.right, data);
81+
return data;
82+
}
83+
}
84+
85+
const tree = new BST();
86+
tree.insert(5);
87+
tree.insert(8);
88+
tree.insert(3);
89+
tree.insert(1);
90+
tree.insert(7);
91+
tree.insert(9);
92+
console.log(tree.dfs());
93+
console.log(tree.dfsPreOrder());
94+
console.log(tree.dfsPostOrder());
95+
console.log(tree.dfsInOrder());

0 commit comments

Comments
 (0)