// вырезание узла
        private HeapNode <TPriority, TItem> MoveToRoot(HeapNode <TPriority, TItem> node)
        {
            // запомнить родителя
            HeapNode <TPriority, TItem> parent = node.Parent;

            // удалить родителя, добавить в корневой список, снять пометку
            node.RemoveParent();
            Trees.AddFirst(node);
            node.Marked = false;
            return(parent);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Cuts the given node from its parent and moves it to the list of root trees. Returns the parent of the node, prior to it
        /// being cut
        /// </summary>
        private HeapNode <TPriority, TItem> MoveToRoot(HeapNode <TPriority, TItem> node)
        {
            // Remeber ref to parent because child is about to be cut
            HeapNode <TPriority, TItem> parent = node.Parent;

            // Remove ref to parent and parent ref to child
            node.RemoveParent();
            Trees.AddFirst(node);
            node.Marked = false;

            // Return old parent of node
            return(parent);
        }