Exemplo n.º 1
0
        public static IEnumerable <TNode> DepthFirstTraversal <TNode>(
            this IGraph <TNode> graph,
            TNode startNode,
            DepthFirstTraversalOrdering ordering)
        {
            HashSet <TNode> travelledNodes = new HashSet <TNode>();

            switch (ordering)
            {
            case DepthFirstTraversalOrdering.PreOrdering:
                return(DepthFirstTraversalVisitPreOrder(graph, startNode, travelledNodes));

            case DepthFirstTraversalOrdering.PostOrdering:
                return(DepthFirstTraversalVisitPostOrder(graph, startNode, travelledNodes));

            default:
                throw new ArgumentException();
            }
        }
Exemplo n.º 2
0
        public static IEnumerable <TNode> DepthFirstTraversalAllNodes <TNode>(
            this IGraph <TNode> graph,
            DepthFirstTraversalOrdering ordering)
        {
            HashSet <TNode> travelledNodes = new HashSet <TNode>();

            switch (ordering)
            {
            case DepthFirstTraversalOrdering.PreOrdering:
                foreach (var node in graph)
                {
                    if (!travelledNodes.Contains(node))
                    {
                        foreach (var node2 in DepthFirstTraversalVisitPreOrder(graph, node, travelledNodes))
                        {
                            yield return(node2);
                        }
                    }
                }
                break;

            case DepthFirstTraversalOrdering.PostOrdering:
                foreach (var node in graph)
                {
                    if (!travelledNodes.Contains(node))
                    {
                        foreach (var node2 in DepthFirstTraversalVisitPostOrder(graph, node, travelledNodes))
                        {
                            yield return(node2);
                        }
                    }
                }
                break;

            default:
                throw new ArgumentException();
            }
        }