public void Push(T v) { NodeSH <T> p = new NodeSH <T>(v); root = NodeSH <T> .Meld(root, p); this.Count++; }
public void Pop() { if (root == null) { return; } root = NodeSH <T> .Meld(root.L, root.R); this.Count--; }
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); }
public NodeSH(S v) { Val = v; L = null; R = null; }