package network;

import java.util.Iterator;
import java.util.Set;

public interface UnweightGraph<Vertex> extends Iterable<Vertex> {
	
	// FATTO
	public boolean containsVertex(Vertex vertex);
	
	// FATTO
	public boolean addVertex(Vertex vertex);
	
	// FATTO
	public boolean removeVertex(Vertex vertex);
	
	// FATTO
	public int edgeSize();
	
	// FATTO
	public boolean containsEdge(Vertex v1, Vertex v2);
	
	// FATTO
	public boolean addEdge(Vertex v1, Vertex v2);
	
	// FATTO
	public boolean removeEdge(Vertex v1, Vertex v2);
	
	// FATTO
	public boolean isEmpty();
	
	// FATTO
	public int size();
	
	// FATTO
	public Set<Vertex> neighbors (Vertex v);
	
	// FATTO
	public Iterator<Vertex> iterator();
	
	// FATTO
	public Iterator<Vertex> breadthFirstIterator (Vertex v);
	
	
	public Iterator<Vertex> depthFisrtIterator (Vertex v);
	
}
