图及其深搜广搜

基本概念

1. 术语及表示方法

一般用G=(V,E)表示,包括一个点集和边集。

概念:稠密图、稀疏图、完全图;有向图与无向图;带权图与无权图;

表示方法:一般用邻接矩阵邻接表(另有十字链表邻接多重表等)
这里写图片描述
这里写图片描述

图的遍历

1. DFS

从某一个节点出发,沿着图的某一条分支搜索至末端,然后回溯,沿着另一分支搜索,依此类推。该过程会产生一课深度优先搜索树。

    void DFStraverse(int v){    //从顶点v开始进行遍历
        visited[v]=1;
        System.out.print(v+" ");   //输出访问顶点
        for(int i=0;i<NumberOfnodes;i++){
            if(graph[v][i]==1&&visited[i]==0){  //与v有边相连的顶点i,且顶点i还未被访问
                DFStraverse(i);
            }
        }
    }

2. BFS

BFS先访问起点的所有邻居点,再据此规则访问其他节点。如果图如为一个树结构,则BFS同树的层次遍历(从顶层开始,一层一层访问)。采用一个队列来实现。

void BFStraverse(int v){
        visited[v]=1;
        queue.add(v);
        while(queue.size()>0){
            int node=queue.get(0);    //获取队首节点
            queue.remove(0);          //删除队首节点
            //System.out.print(node+" ");   //打印队首节点
            for(int i=0;i<numNodes;i++){
                if(graph[node][i]==1&&visited[i]==0){     //将顶点node的未访问邻居节点加入队列
                    queue.add(i);
                    visited[i]=1;            //记得标记!!!
                }
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值