1、图的定义。
图分为两个部分组长,包括边和点。将点用边连接起来就形成了图。
图也分为有向图与无向图。有向图就是边会带上方向。指明从哪个点到哪个点,反之无向图指没有方向得边。更多的时候会给边加上值,在图中,我们称之为该边得权。有向图中,叫做,有向带权图。无向图中,叫做,无向带权图。
2、图的构造
图是由边和点组成。那么构造就从边和点开始。
边:
每条边得两端各对应一个点,边得大小。所以图得边构造类如下:
/**
* 图中的边
*/
//边的左节点
GraphNode leftNode;
//边的右节点
GraphNode rightNode;
//边的权值
int value;
public GraphEdge(GraphNode leftNode,GraphNode rightNode,int value){
this.leftNode = leftNode;
this.rightNode = rightNode;
this.value = value;
}
点:
一个点可对应零条或者多条边。以及为了图得遍历,可对点设置boolean值。用来判断该点是否遍历过。点得构造类如下:
/**
* 图的节点
*/
int value;//节点得值
boolean tf;//节点是否遍历过
List<GraphEdge> edges;//该节点连接得边
public GraphNode(int value,boolean tf){
this.value