Exemplo n.º 1
0
        /// <summary>Private recursion.</summary>
        private void VisitInPreOrder(IStateVisitor v, int node, BitArray visited)
        {
            if (visited.Get(node))
            {
                return;
            }
            visited.Set(node, true);

            if (v.Accept(node))
            {
                for (int arc = GetFirstArc(node); arc != 0; arc = GetNextArc(arc))
                {
                    if (!IsArcTerminal(arc))
                    {
                        VisitInPreOrder(v, GetEndNode(arc), visited);
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>Private recursion.</summary>
        private bool VisitInPostOrder(IStateVisitor v, int node, BitArray visited)
        {
            if (visited.Get(node))
            {
                return(true);
            }
            visited.Set(node, true);

            for (int arc = GetFirstArc(node); arc != 0; arc = GetNextArc(arc))
            {
                if (!IsArcTerminal(arc))
                {
                    if (!VisitInPostOrder(v, GetEndNode(arc), visited))
                    {
                        return(false);
                    }
                }
            }

            return(v.Accept(node));
        }
Exemplo n.º 3
0
 public Backtrack(IStateVisitor v)
 {
     this.v = v;
 }
 public override void Accept(IStateVisitor visitor)
 {
     visitor.Visit(this);
 }
Exemplo n.º 5
0
 public abstract void Accept(IStateVisitor visitor);