public BinomialHeapNode(T value, BinomialHeapNode <T> parent)
 {
     Value   = value;
     Parent  = parent;
     Sibling = Child = null;
     order   = 0;
 }
        public BinomialHeapNode <T> Find(T toFind)
        {
            BinomialHeapNode <T> found = null;

            if (Value.Equals(toFind))
            {
                return(this);
            }
            else if (Sibling != null)
            {
                found = Sibling.Find(toFind);
            }
            if (Value.CompareTo(toFind) < 0 && found == null)
            {
                if (Child != null)
                {
                    found = Child.Find(toFind);
                }
            }
            return(found);
        }
        public void AddChild(BinomialHeapNode <T> child)
        {
            if (child != null)
            {
                child.Sibling = null;
                if (Child != null)
                {
                    BinomialHeapNode <T> temp = Child;
                    while (temp.Sibling != null)
                    {
                        temp = temp.Sibling;
                    }
                    temp.Sibling = child;
                }
                else
                {
                    Child = child;
                }

                ++order;
                child.Parent = this;
            }
        }