public static HeapNode Meld(HeapNode leftNode, HeapNode rightNode) { if (leftNode == null) { return(rightNode); } if (rightNode == null) { return(leftNode); } if (HeapNode.CompareTo(leftNode.val, rightNode.val) > 0) { var t = rightNode; rightNode = leftNode; leftNode = t; } leftNode.r = HeapNode.Meld(leftNode.r, rightNode); var t2 = leftNode.l; leftNode.l = leftNode.r; leftNode.r = t2; return(leftNode); }