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(); + }); });