// вырезание узла 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); }
/// <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); }