浅析深度优先搜索算法

前两天参加了一个笔试,最后一道算法题,采用深度优先算法就能解决,但当时没有做出来,所以在网上查了下资料,写了这篇博客。

一.深度优先算法定义

    顾名思义,深度优先搜索算法就是指在图中搜索时,沿着一条路走到黑,直到碰的头破血流了,然后回头,回到起点,在从起点出发,沿着未曾走过的路,继续去碰,直到所有的路都走完。这种每次一条道到黑的搜索过程称为深度优先

二.示例

   

    如图所示:深度优先查看从1-->2--->5,返回1,然后1-->--6,返回1,在到4,返回1,发现没有了,搜索结束

三.代码框架

   

public abstract class DFS<T> {
    public abstract boolean check(List<T> t, int depth);

    public abstract boolean visited(T t);

    public abstract boolean unvisited(T t);

    public boolean dfs(List<T> elements, int depth) {
        if (check(elements, depth)) {
            return true;
        }

        for (T e : elements) {
            if (!visited(e)) {
                if (dfs(elements, depth + 1)) {
                    return true;
                }
                unvisited(e);
            }
        }
        return false;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值