Skip to content

Commit 729aabe

Browse files
authored
Merge pull request knaxus#164 from knaxus/refactor-bst
Refactor BST
2 parents a8654b9 + fa327ed commit 729aabe

16 files changed

+383
-412
lines changed

src/_DataStructures_/Queue/Queue.test.js

-9
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,5 @@ describe('Data Structure : Queue', () => {
6969
queue.destroy();
7070
expect(queue.length()).toEqual(0);
7171
});
72-
73-
it('Override and throw error for other LL methods', () => {
74-
expect(() => { queue.addAtBeginning(); }).toThrowError('Not Allowed');
75-
expect(() => { queue.addAt(); }).toThrowError('Not Allowed');
76-
expect(() => { queue.removeFromEnd(); }).toThrowError('Not Allowed');
77-
expect(() => { queue.getLast(); }).toThrowError('Not Allowed');
78-
expect(() => { queue.getAt(); }).toThrowError('Not Allowed');
79-
expect(() => { queue.removeAt(); }).toThrowError('Not Allowed');
80-
});
8172
});
8273
});

src/_DataStructures_/Queue/index.js

+35-37
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,54 @@
1-
const { LinkedList: SinglyLinkedLists } = require('../LinkedList');
1+
const { LinkedList: SLL } = require('../LinkedList');
22

3-
class Queue extends SinglyLinkedLists {
3+
class Queue {
44
constructor() {
5-
super();
6-
this.NotAllowed = 'Not Allowed';
5+
this.data = this.getStorage();
76
}
87

9-
enqueue(data) {
10-
return this.addAtEnd(data);
8+
enqueue(element) {
9+
this.data.enqueue(element);
1110
}
1211

1312
dequeue() {
14-
const node = this.removeFromBeginning();
15-
return node ? node.data : node;
13+
return this.data.dequeue();
1614
}
1715

1816
peek() {
19-
const node = this.getFirst();
20-
return node ? node.data : node;
17+
return this.data.peek();
2118
}
2219

2320
length() {
24-
return this.size;
21+
return this.data.length();
2522
}
2623

2724
destroy() {
28-
this.delete();
29-
}
30-
31-
/** Override and throw error for other LL methods */
32-
addAtBeginning() {
33-
throw new Error(this.NotAllowed);
34-
}
35-
36-
addAt() {
37-
throw new Error(this.NotAllowed);
38-
}
39-
40-
removeFromEnd() {
41-
throw new Error(this.NotAllowed);
42-
}
43-
44-
getLast() {
45-
throw new Error(this.NotAllowed);
46-
}
47-
48-
getAt() {
49-
throw new Error(this.NotAllowed);
50-
}
51-
52-
removeAt() {
53-
throw new Error(this.NotAllowed);
25+
return this.data.destroy();
26+
}
27+
28+
// eslint-disable-next-line class-methods-use-this
29+
getStorage() {
30+
// encapsulating the internal implementation here
31+
const storage = new SLL();
32+
33+
return {
34+
enqueue(element) {
35+
return storage.addAtEnd(element);
36+
},
37+
dequeue() {
38+
const node = storage.removeFromBeginning();
39+
return node ? node.data : node;
40+
},
41+
peek() {
42+
const node = storage.getFirst();
43+
return node ? node.data : node;
44+
},
45+
length() {
46+
return storage.size;
47+
},
48+
destroy() {
49+
storage.delete();
50+
},
51+
};
5452
}
5553
}
5654

src/_DataStructures_/Trees/BinarySearchTree/bst-insertion.test.js

-68
This file was deleted.

src/_DataStructures_/Trees/BinarySearchTree/bst-isEmpty.test.js

-18
This file was deleted.

src/_DataStructures_/Trees/BinarySearchTree/bst-maximum.test.js

-18
This file was deleted.

src/_DataStructures_/Trees/BinarySearchTree/bst-minimum.test.js

-18
This file was deleted.

src/_DataStructures_/Trees/BinarySearchTree/bst-remove.test.js

-32
This file was deleted.

src/_DataStructures_/Trees/BinarySearchTree/bst-search.test.js

-17
This file was deleted.

src/_DataStructures_/Trees/BinarySearchTree/bst-traversals.test.js

-34
This file was deleted.

src/_DataStructures_/Trees/BinarySearchTree/height-of-bst/height-of-bst.test.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ describe('Binary search tree traversals', () => {
1515

1616
describe('Check bst was created as expected', () => {
1717
it('Inorder traversal of the created bst should be [ 2, 4, 5, 6, 8, 9, 12 ]', () => {
18-
expect(bst.traverseInorder()).toEqual([2, 4, 5, 6, 8, 9, 12]);
18+
expect(bst.inorder()).toEqual([2, 4, 5, 6, 8, 9, 12]);
1919
});
2020

2121
it('Preorder traversal of the created bst should be [ 6, 4, 2, 5, 9, 8, 12 ]', () => {
22-
expect(bst.traversePreorder()).toEqual([6, 4, 2, 5, 9, 8, 12]);
22+
expect(bst.preorder()).toEqual([6, 4, 2, 5, 9, 8, 12]);
2323
});
2424

2525
it('Postorder traversal of the created bst should be [ 2, 5, 4, 8, 12, 9, 6 ]', () => {
26-
expect(bst.traversePostorder()).toEqual([2, 5, 4, 8, 12, 9, 6]);
26+
expect(bst.postorder()).toEqual([2, 5, 4, 8, 12, 9, 6]);
2727
});
2828
});
2929

src/_DataStructures_/Trees/BinarySearchTree/height-of-bst/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function findHeightOfBST(root) {
2727
// myBST.add(10);
2828

2929
// // console.log(myBST.root);
30-
// console.log(myBST.traversePreorder());
30+
// console.log(myBST.preorder());
3131
// console.log(findHeightOfBST(myBST.root));
3232

3333
module.exports = findHeightOfBST;

0 commit comments

Comments
 (0)