Esempio n. 1
0
        private void Traversal(INodeMinMax <T> node)
        {
            if (node == null)
            {
                return;
            }
            INodeMinMax <T> next = node.FindFirstFree() as INodeMinMax <T>;

            if (next != null)
            {
                _stack.Push(next);
                _depth++;
                Traversal(next);
            }
            else
            {
                next = _stack.Pop();
                _depth--;

                next.Value = _minMaxPriority.GetPriority(_depth) == PriorityType.MIN ? next.GetMinChild() : next.GetMaxChild();

                next.Debug();
                next.IsVisited = true;
                if (_stack.Count > 0)
                {
                    Traversal(_stack.Peek());
                }
            }
        }
Esempio n. 2
0
        private void Traversal(INodeMinMax <T> node)
        {
            if (node == null)
            {
                return;
            }
            INodeMinMax <T> next = node.FindFirstFree() as INodeMinMax <T>;

            if (next != null)
            {
                _stack.Push(next);
                _depth++;
                Traversal(next);
            }
            else
            {
                next = _stack.Pop();
                _depth--;

                next.Debug();
                next.IsVisited = true;
                if (_stack.Count > 0)
                {
                    Traversal(_stack.Peek());
                }
            }
        }