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);
            }