public IEnumerable <NodeInt> IODFTraversal()
        {
            var stack = new StackSinglyLinkedList <INode <int> >();

            foreach (var i in
                     BinaryTree <int> .InOrderTraversalIterativeIterator(Root, stack))
            {
                yield return((NodeInt)i);
            }
        }
        public static int FactorialIterative(int n)
        {
            var stack = new StackSinglyLinkedList <int>();

            for (; n > 1; n--)
            {
                stack.Push(n);
            }
            while (stack.Count != 0)
            {
                n *= stack.Pop();
            }
            return(n);
        }