Removing a node from the AVL tree

Removing a node from an AVL tree works the same way as in BST. In addition to removing the node, we will also verify whether the tree is still balanced after the removal, and if not, we will apply the rotation operations as needed.

The following code removes a node from an AVL tree:

removeNode(node, key) { node = super.removeNode(node, key); // {1} if (node == null) { return node; // null, no need to balance } // verify if tree is balanced const balanceFactor = this.getBalanceFactor(node); // {2} if (balanceFactor === BalanceFactor.UNBALANCED_LEFT) { // {3} const balanceFactorLeft = this.getBalanceFactor(node.left); // {4} if ( balanceFactorLeft === BalanceFactor.BALANCED || balanceFactorLeft === BalanceFactor.SLIGHTLY_UNBALANCED_LEFT ...

Get Learning JavaScript Data Structures and Algorithms - Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.