public void UpdateHeight(AVLTreeNode <T> node) { if (node == null) { return; } node.UpdateHeights(); }
private void Delete(AVLTreeNode <T> node, bool balanceWhileDeleting = true) { if (node.IsLeaf) { DeleteRootOrLeftOrRightNode(node); node.UpdateCounts(); node.UpdateHeights(); if (balanceWhileDeleting) { Balance(node); } return; } if (node.IsRightTreeNull) { PerformDeleteWhenRightTreeIsNull(node); node.UpdateCounts(); node.UpdateHeights(); if (balanceWhileDeleting) { Balance(node); } return; } if (node.IsLeftTreeNull) { PerformDeleteWhenLeftTreeIsNull(node); node.UpdateCounts(); node.UpdateHeights(); if (balanceWhileDeleting) { Balance(node); } return; } var maxOfLeftNode = FindMax(node.Left); node.Value = maxOfLeftNode.Value; FindNodeToBeDeleted(node.Left, maxOfLeftNode.Value, balanceWhileDeleting); }