代码改变世界

欧拉回路

2015-09-06 16:31  itwolf  阅读(273)  评论(0编辑  收藏  举报

一、定义

欧拉回路:图G,若存在一条路,经过G中每条边有且仅有一次,称这条路为欧拉路,如果存在一条回路经过G每条边有且仅有一次,

称这条回路为欧拉回路。具有欧拉回路的图称为欧拉图。

二、判断欧拉路是否存在的方法

(1)有向图:

1、图连通

2、所有顶点的出度都等于入度或者有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。

(2)无向图:

1、图连通,

2、所有的顶点都是偶数度或者只有两个顶点是奇数度,其余都是偶数度的。

图的连通性判断:从任意一个结点开始深度优先或者广度优先遍历,如果图是连同的那么必然所有节点都被遍历过,否则图不连通。

为此可以先设置一个数组visited[]初始化全为false,然后深度优先或者广度优先遍历一下,最后在遍历一遍visited[]如果出现false则不连通,否则连通。