Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* (C) Copyright 2003-2021, by Liviu Rau and Contributors.
*
* JGraphT : a free Java graph-theory library
*
* See the CONTRIBUTORS.md file distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the
* GNU Lesser General Public License v2.1 or later
* which is available at
* http://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html.
*
* SPDX-License-Identifier: EPL-2.0 OR LGPL-2.1-or-later
*/
package org.jgrapht.traverse;
import org.jgrapht.*;
import org.jgrapht.util.*;
import java.util.*;
/**
* A depth-first iterator for a directed or undirected graph.
*
*
* For this iterator to work correctly the graph must not be modified during iteration. Currently
* there are no means to ensure that, nor to fail-fast. The results of such modifications are
* undefined.
*
* @param the graph vertex type
* @param the graph edge type
*
* @author Liviu Rau
* @author Barak Naveh
*/
public class DepthFirstIterator
extends
CrossComponentIterator
{
/**
* Sentinel object. Unfortunately, we can't use null, because ArrayDeque won't accept those. And
* we don't want to rely on the caller to provide a sentinel object for us. So we have to play
* typecasting games.
*/
public static final Object SENTINEL = new Object();
/**
* Standard vertex visit state enumeration.
*/
protected static enum VisitColor
{
/**
* Vertex has not been returned via iterator yet.
*/
WHITE,
/**
* Vertex has been returned via iterator, but we're not done with all of its out-edges yet.
*/
GRAY,
/**
* Vertex has been returned via iterator, and we're done with all of its out-edges.
*/
BLACK
}
private Deque