public void RemoveAll(AnyType Data) { BinarySearchTreeNode <AnyType> CurrentNode = Find(Data); if (CurrentNode != null) { CurrentNode.RemoveAll(); this.ActiveSize--; } }
private void RemoveTree(BinarySearchTreeNode <AnyType> SubTree) { if (SubTree != null) { if (SubTree.Parent != null) { if (SubTree.Parent.Left == SubTree) { SubTree.Parent.Left = null; } if (SubTree.Parent.Right == SubTree) { SubTree.Parent.Right = null; } } if (SubTree.Left != null) { RemoveTree(SubTree.Left); } if (SubTree.Right != null) { RemoveTree(SubTree.Right); } if (SubTree.IsNotEmpty) { SubTree.RemoveAll(); this.ActiveSize--; } SubTree = null; this.TotalSize--; } }