From 863dbdbac394a48829facada054971dd76659815 Mon Sep 17 00:00:00 2001 From: Oleksii Trekhleb Date: Fri, 13 Jul 2018 17:48:27 +0300 Subject: [PATCH] Fix issue #98. --- .../tree/binary-search-tree/BinarySearchTreeNode.js | 3 +++ .../__test__/BinarySearchTreeNode.test.js | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/src/data-structures/tree/binary-search-tree/BinarySearchTreeNode.js b/src/data-structures/tree/binary-search-tree/BinarySearchTreeNode.js index d821ee89..314f8e06 100644 --- a/src/data-structures/tree/binary-search-tree/BinarySearchTreeNode.js +++ b/src/data-structures/tree/binary-search-tree/BinarySearchTreeNode.js @@ -132,6 +132,9 @@ export default class BinarySearchTreeNode extends BinaryTreeNode { } } + // Clear the parent of removed node. + nodeToRemove.parent = null; + return true; } 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 63b9d999..3efd918f 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 @@ -243,4 +243,13 @@ describe('BinarySearchTreeNode', () => { expect(bstNode.findMin().value).toEqual(obj1); }); + + it('should abandon removed node', () => { + const rootNode = new BinarySearchTreeNode('foo'); + rootNode.insert('bar'); + const childNode = rootNode.find('bar'); + rootNode.remove('bar'); + + expect(childNode.parent).toBeNull(); + }); });