Beispiel #1
0
        public void DeleteNode(T data)
        {
            var deleteNode = HeapTree.Where(o => o.CompareTo(data) == 0).FirstOrDefault();

            if (deleteNode == null)
            {
                throw new ArgumentException("delete data doesn't exist in heap");
            }
            var lastNode        = HeapTree[LastIndex];
            var deleteNodeIndex = Array.IndexOf(HeapTree, deleteNode);

            HeapTree[deleteNodeIndex] = lastNode;
            ReHeapifyFromIndex(deleteNodeIndex);
            LastIndex--;
        }