Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 729aabe

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

File tree

16 files changed

+383
-412
lines changed

16 files changed

+383
-412
lines changed

‎src/_DataStructures_/Queue/Queue.test.js

Lines changed: 0 additions & 9 deletions
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

Lines changed: 35 additions & 37 deletions
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 extendsSinglyLinkedLists{
3+
class Queue {
44
constructor() {
5-
super();
6-
this.NotAllowed = 'Not Allowed';
5+
this.data = this.getStorage();
76
}
87

9-
enqueue(data) {
10-
returnthis.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

Lines changed: 0 additions & 68 deletions
This file was deleted.

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

Lines changed: 0 additions & 18 deletions
This file was deleted.

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

Lines changed: 0 additions & 18 deletions
This file was deleted.

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

Lines changed: 0 additions & 18 deletions
This file was deleted.

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

Lines changed: 0 additions & 32 deletions
This file was deleted.

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

Lines changed: 0 additions & 17 deletions
This file was deleted.

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

Lines changed: 0 additions & 34 deletions
This file was deleted.

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

Lines changed: 3 additions & 3 deletions
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

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /