Skip to content

Commit 8730240

Browse files
committed
Add binary search tree.
1 parent 8caf3a2 commit 8730240

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

src/data-structures/tree/binary-search-tree/BinarySearchTreeNode.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default class BinarySearchTreeNode extends BinaryTreeNode {
99
} else {
1010
this.left = new BinarySearchTreeNode(value);
1111
}
12-
} else {
12+
} else if (value > this.value) {
1313
// Insert to the right.
1414
if (this.right) {
1515
this.right.insert(value);
@@ -30,7 +30,7 @@ export default class BinarySearchTreeNode extends BinaryTreeNode {
3030
if (value < this.value && this.left) {
3131
// Check left nodes.
3232
return this.left.contains(value);
33-
} else if (this.right) {
33+
} else if (value > this.value && this.right) {
3434
// Check right nodes.
3535
return this.right.contains(value);
3636
}

src/data-structures/tree/binary-search-tree/__test__/BinarySearchTreeNode.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,19 @@ describe('BinarySearchTreeNode', () => {
4141
expect(bstNode.contains(6)).toBeTruthy();
4242
expect(bstNode.contains(8)).toBeFalsy();
4343
});
44+
45+
it('should not insert duplicates', () => {
46+
const bstNode = new BinarySearchTreeNode(2);
47+
bstNode.insert(1);
48+
49+
expect(bstNode.toString()).toBe('1,2');
50+
expect(bstNode.contains(1)).toBeTruthy();
51+
expect(bstNode.contains(3)).toBeFalsy();
52+
53+
bstNode.insert(1);
54+
55+
expect(bstNode.toString()).toBe('1,2');
56+
expect(bstNode.contains(1)).toBeTruthy();
57+
expect(bstNode.contains(3)).toBeFalsy();
58+
});
4459
});

0 commit comments

Comments
 (0)