深度优先遍历图(DFS)

    流程:

    1,利用栈实现

    2,从源节点开始把节点按照深度放入栈,然后弹出

    3,每弹出一个点,把该节点下一个没有进过栈的邻接点放入栈

    4,直到栈变空

图的表示和生成见:点击打开链接

import java.util.HashSet;
import java.util.Set;
import java.util.Stack;

public class DFS {
	public static void dfs(Node node){
		if(node == null){
			return ;
		}
		System.out.print("dfs:");
		Stack<Node>stack = new Stack<Node>();
		Set<Node>set = new HashSet<Node>();//记录是否进过栈
		stack.push(node);
		set.add(node);
		System.out.print(node.value+" ");//加入就打印
		while(!stack.isEmpty()){
			Node cur = stack.pop();
			for(Node next : cur.nexts){
				if(!set.contains(next)){//没进过栈的
					set.add(next);
					stack.push(cur);
					stack.push(next);
					System.out.print(next.value+" ");
					break;
				}
			}
		}
		System.out.println();
	}
}

    原文作者:数据结构之图
    原文地址: https://blog.csdn.net/qq_38238041/article/details/79698934
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞