Example #1
0
    public void Push(T v)
    {
        NodeSH <T> p = new NodeSH <T>(v);

        root = NodeSH <T> .Meld(root, p);

        this.Count++;
    }
Example #2
0
    public void Pop()
    {
        if (root == null)
        {
            return;
        }
        root = NodeSH <T> .Meld(root.L, root.R);

        this.Count--;
    }
Example #3
0
 public static NodeSH <S> Meld(NodeSH <S> a, NodeSH <S> b)
 {
     if (a == null)
     {
         return(b);
     }
     if (b == null)
     {
         return(a);
     }
     if (a.Val.CompareTo(b.Val) > 0)
     {
         swap(ref a, ref b);
     }
     a.R = Meld(a.R, b);
     swap(ref a.L, ref a.R);
     return(a);
 }
Example #4
0
 public NodeSH(S v)
 {
     Val = v;
     L   = null; R = null;
 }