图的BFS DFS

图的BFS DFS

在这里插入图片描述

/**
	 * 广度优先搜索
	 * @param begin 开始的结点名称
	 */
	public void bfs(String begin) {
		Vertex beginVertex = vertexMap.get(begin);
		if(beginVertex==null) return;
		HashSet<Vertex> set = new HashSet<>();
		Queue<Vertex> queue=new LinkedList();
		queue.offer(beginVertex);
		while(!queue.isEmpty()) {
			Vertex vertex= queue.poll();
			System.out.println(vertex.name);
			set.add(vertex);
			Edge edge=vertex.next;
			while(edge!=null) {
				if(set.contains(vertexMap.get(edge.name))) {
					edge=edge.next;
					continue;
				}
				queue.offer(vertexMap.get(edge.name));
				edge=edge.next;
			}
		}
	}
/**
	 * 深度优先搜索
	 * @param vertex 开始结点
	 * @param set 传入的一个set集合 用于去重
	 */
	public void dfs(Vertex vertex,HashSet<Vertex> set) {
		System.out.println(vertex.name);
		set.add(vertex);
		Edge edge=vertex.next;
		while(edge!=null) {
			if(set.contains(vertexMap.get(edge.name))) {
				edge=edge.next;
				continue;
			}
			dfs(vertexMap.get(edge.name),set);
			edge=edge.next;
		}
	}
	public void dfs(String name) {
		Vertex beginVertex = vertexMap.get(name);
		if(beginVertex==null) return;
		dfs(beginVertex, new HashSet<Vertex>());
	}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值