广度优先遍历(BFS)及java代码实现

广度优先遍历(BFS)

定义及相关内容

所谓的广度优先遍历与深度优先遍历的不同就体现在“广度”这个词上,“深度优先”遍历算法讲究的是能遍历到多“深”就遍历到多深,完成了“深”的条件在来考虑“广”的条件。而“广度优先”遍历算法就恰恰相反了,“广度”优先遍历体现在一个“广”字上,即一次将某个节点所有的相邻节点都遍历完了,再去“深”度的往下遍历。(类似于层级遍历)

代码实现

/**
 *图的广度优先遍历算法 (对外公开)
 * @author SGJ
 * @param
 * @return
 */
public void broadFirstSearch(){
    isVisited=new boolean[vertexSize];
    for (int i=0;i<vertexSize;i++){
        if (!isVisited[i]){
            broadFirstSearch(i);
        }

    }
}

/**
 *(内部代码) 广度优先遍历实现
 * @author SGJ
 * @param
 * @return
 */
private void broadFirstSearch(int i){
    int u,w;
    LinkedList<Integer> que=new LinkedList( );
    System.out.println("访问到了"+i+"顶点");
    isVisited[i]=true;
    que.add( i );
    while(!que.isEmpty()){
        u=que.removeFirst().intValue();
        w=getFirstNeighbor( u );
        while(w!=-1) {
            if (!isVisited[w]) {
                System.out.println("访问到了"+w+"顶点");
                que.add( w );
                isVisited[w] = true;
            }
            w=getNextNeighbor( u,w );
        }
    }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值