diff --git a/src/data-structures/tree/binary-search-tree/BinarySearchTreeNode.js b/src/data-structures/tree/binary-search-tree/BinarySearchTreeNode.js index 5ee5e788..d298c722 100644 --- a/src/data-structures/tree/binary-search-tree/BinarySearchTreeNode.js +++ b/src/data-structures/tree/binary-search-tree/BinarySearchTreeNode.js @@ -9,7 +9,7 @@ export default class BinarySearchTreeNode extends BinaryTreeNode { } else { this.left = new BinarySearchTreeNode(value); } - } else { + } else if (value > this.value) { // Insert to the right. if (this.right) { this.right.insert(value); @@ -30,7 +30,7 @@ export default class BinarySearchTreeNode extends BinaryTreeNode { if (value < this.value && this.left) { // Check left nodes. return this.left.contains(value); - } else if (this.right) { + } else if (value > this.value && this.right) { // Check right nodes. return this.right.contains(value); } diff --git a/src/data-structures/tree/binary-search-tree/__test__/BinarySearchTreeNode.test.js b/src/data-structures/tree/binary-search-tree/__test__/BinarySearchTreeNode.test.js index 0ff84dfd..1191301e 100644 --- a/src/data-structures/tree/binary-search-tree/__test__/BinarySearchTreeNode.test.js +++ b/src/data-structures/tree/binary-search-tree/__test__/BinarySearchTreeNode.test.js @@ -41,4 +41,19 @@ describe('BinarySearchTreeNode', () => { expect(bstNode.contains(6)).toBeTruthy(); expect(bstNode.contains(8)).toBeFalsy(); }); + + it('should not insert duplicates', () => { + const bstNode = new BinarySearchTreeNode(2); + bstNode.insert(1); + + expect(bstNode.toString()).toBe('1,2'); + expect(bstNode.contains(1)).toBeTruthy(); + expect(bstNode.contains(3)).toBeFalsy(); + + bstNode.insert(1); + + expect(bstNode.toString()).toBe('1,2'); + expect(bstNode.contains(1)).toBeTruthy(); + expect(bstNode.contains(3)).toBeFalsy(); + }); });