Esempio n. 1
0
 private ImmutableMinHeap MergeChildren(ImmutableMinHeap left, ImmutableMinHeap right)
 {
     if (left.isEmpty() && right.isEmpty())
     {
         return(new Leaf());
     }
     if (left.size < Math.Pow(left.height, 2) - 1)
     {
         return(FloatLeft(left.value, MergeChildren(left.left, left.right), right));
     }
     if (right.size < Math.Pow(right.height, 2) - 1)
     {
         return(FloatRight(right.value, left, MergeChildren(right.left, right.right)));
     }
     if (right.height < left.height)
     {
         return(FloatLeft(left.value, MergeChildren(left.left, left.right), right));
     }
     return(FloatRight(right.value, left, MergeChildren(right.left, right.right)));
 }