示例#1
0
        public void RemoveAll(AnyType Data)
        {
            BinarySearchTreeNode <AnyType> CurrentNode = Find(Data);

            if (CurrentNode != null)
            {
                CurrentNode.RemoveAll();

                this.ActiveSize--;
            }
        }
示例#2
0
        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--;
            }
        }