From 873024079a38948ab10292a73130235bca65ae43 Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Tue, 3 Apr 2018 06:41:45 +0300 Subject: [PATCH] Add binary search tree. --- .../binary-search-tree/BinarySearchTreeNode.js | 4 ++-- .../__test__/BinarySearchTreeNode.test.js | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) 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(); + }); });