实验一:判断一个无向图是不是一棵树
public boolean isTree()
实验二:判断两个图是否相同
public boolean equlas(Object obj)
实验方法与步骤(需求分析、算法设计思路、流程图等)
- 判断一个无向图是不是一棵树
判断一个图有n个结点,同时具有n-1条边,同时该图是个连通图。若满足条件,则是二叉树,否则并不是二叉树。
- 判断两个图是否相同
通过遍历,比较结点和边的数量,同时比较边的权值,若都相同,则返回true,否则返回false。
四、实验原始纪录(源程序、数据结构等)
public abstract class AbstractGraph<T>
{
protected static final int MAX_WEIGHT=99999;
protected SeqList<T> vertexlist;
boolean directed;
public AbstractGraph(int length)
{
this.vertexlist = new SeqList<T>(length);
// System.out.println(this.vertexlist);
}
public AbstractGraph()
{
this(10);
}
public int vertexCount()
{
return this.vertexlist.size();
}
public int edeCount()
{
return 0;
}
public String toString()
{
return "顶点集合:"+this.vertexlist.toString()+"\n";
}
public T getVertex(int i)
{
return this.vertexlist.get(i);
}
public void setVertex(int i, T x)
{
this.vertexlist.set(i,x);
}
public abstract int insertVertex(T x);
public abstract void removeVertex(int i);
public abstract int weight(int i, int j);
protected abstract int next(int i, int j);
public void DFSTraverse(int i)
{
boolean[] visited=new boolean[this.vertexCount()];
int j=i;
do
{ if (!visited[j])
{
System.out.print("{ ");
this.depthfs(j, visited);
System.out.print("} ");
}
j = (j+1) % this.vertexCount();
} while (j!=i);
System.out.println();
}
private void depthfs(int i, boolean[] visited)
{
System.out.print(this.getVertex(i)+" ");
visited[i] = true;
for (int j=this.next(i,-1); j!=-1; j=this.next(i,j))
if(!visited[j])