【数据结构】 Python实现深度优先搜索DFS

代码实现

import numpy as np

def visit(v):
    return print(str(v) + "->",end='')

def FirsNeighbor(v):
    t = -1
    for i in range(g.shape[0]):
        if g[v][i] == 1:
            t = 1
            break
    if(t == 1):
        return i
    else:
        return t
        
def OpenDoor(p):
    if(visited[p] == True):
        return 0
    else:
        return 1

def NextNeighbor(v,w):
    l = []
    for i in range(g.shape[0]):
        if g[v][i] == 1:
            l.append(i)
            
    if(len(l) > 1 and OpenDoor(l[1])):
        return l[1]
    else:
        return -1

def DFS(g, v):
    visit(v)
    visited[v] = True

    w = FirsNeighbor(v)
    while(w >= 0):
        if(visited[w] == False):
            DFS(g,w)
     
        w = NextNeighbor(v,w)
            
            
if __name__ == "__main__":
    
    g =np.array([[0,1,0,0,1,0],
                 [1,0,0,0,0,1],
                 [0,0,0,1,0,1],
                 [0,0,1,0,0,0],
                 [1,0,0,0,0,0],
                 [0,1,1,0,0,0]])
    
    visited = np.zeros(g.shape[0])
    queue = [0]
    DFS(g, 0)

        
    

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值