示例#1
0
        private static Node MergeTrees(Node node1, Node node2) // Both equal ranks and not null
        {
            if (node1.CompareTo(node2) < 0)
            {
                (node1, node2) = (node2, node1);
            }

            Node newRoot = node1;

            if (newRoot.Child == null)
            {
                newRoot.Child = node2;
            }
            else
            {
                node2.Prev = newRoot.Child.Prev;

                newRoot.Child.Prev.Next = node2;
                newRoot.Child.Prev      = node2;
            }

            newRoot.Rank += 1;

            return(newRoot);
        }
示例#2
0
        private Node FindMax()
        {
            Node it  = root.Next;
            Node max = root;

            while (it != null)
            {
                if (max.CompareTo(it) < 0)
                {
                    max = it;
                }

                it = it.Next;
            }

            return(max);
        }