日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python扫雷 广度优先_广度优先搜索(BFS)解题总结

發布時間:2025/3/8 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python扫雷 广度优先_广度优先搜索(BFS)解题总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義

廣度優先搜索算法(Breadth-First-Search),是一種圖形搜索算法。

簡單的說,BFS是從根節點開始,沿著樹(圖)的寬度遍歷樹(圖)的節點。

如果所有節點均被訪問,則算法中止。

BFS同樣屬于盲目搜索。

一般用隊列數據結構來輔助實現BFS算法。

如下圖,其廣度優先算法的遍歷順序為:1->2->3->4->5->6->7->8

算法步驟

首先將根節點放入隊列中。

從隊列中取出第一個節點,并檢驗它是否為目標。如果找到目標,則結束搜尋并回傳結果。否則將它所有尚未檢驗過的直接子節點加入隊列中。

若隊列為空,表示整張圖都檢查過了——亦即圖中沒有欲搜尋的目標。結束搜尋并回傳“找不到目標”。

重復步驟2。

算法模板

# Python

def BFS(root):

visited = set()

queue = []

queue.append([root])

while queue:

node = queue.pop()

visited.add(node)

process(node)

nodes = generate_related_nodes(node)

queue.push(nodes)

# other processing work

// Golang

type TreeNode struct {

Val int

Left *TreeNode

Right *TreeNode

}

func BFS(root *TreeNode){

visited := make(map[*TreeNode]bool)

queue := make([]*TreeNode,0)

queue = append(queue, root)

for len(queue)>0{

node := queue[0]

queue = queue[1:]

visited[node] = true

process(node)

nodes := generate_related_nodes(node)

queue = append(queue, nodes...)

}

// other processing work

}

要點

使用隊列 queue

記錄已訪問節點 visited ,通常使用哈希表

一般要抽象成樹、圖等模型

適用場景

二維數組

實戰題目

參考資料

總結

以上是生活随笔為你收集整理的python扫雷 广度优先_广度优先搜索(BFS)解题总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。