给定一张无向图,若存在一条从节点 S S S到节点 T T T到路径,恰好不重不漏地经过每条边一次(可以重复经过途中的某个节点)。则称该路径为 S S S到 T T T的欧拉路。
特别地,若存在一条从节点 S S S出发的路径,恰好不重不漏地经过每条边一次(可以重复经过途中的某个节点),能够回到节点 S S S,则称该路径为欧拉回路。存在欧拉回路的图叫做欧拉图。
欧拉图的判定定理
一张无向图为欧拉图,当且仅当无向图连通并且每一个节点的度数(出入度之和)为偶数。
欧拉路的判定定理
一张无向图中存在欧拉路,当且仅当无向图连通,并且图中恰好有两个节点的度数为奇数,其他节点的度数都是偶数。那么这个图中就存在欧拉路,并且这两个度数为奇数的店就是欧拉路的起点 S S S和终点 T T T。
欧拉图的具体求法:
欧拉图每个节点度数为偶数说明:只要到达一个节点,就必定有一条尚未走过的边可以离开该点故在上面的伪代码中,调用 d f s ( 1 ) dfs(1) dfs(1),不断递归,每次都走从“从 x x x出发的第一条未访问的边”的另一端点 y y