關於廣度優先查詢和深度優先查詢

2022-06-22 23:42:11 字數 903 閱讀 4055

由於最近在做的專案中設計到了虛擬dom的設計,那自然就避免不了需要對虛擬dom中的節點進行遍歷/查詢了,一般來說查詢節點無非就兩種方法 - 廣度優先查詢和深度優先查詢,這跟我們在資料結構中學習到的樹的遍歷其實是一樣的。ok,廢話不多說,講一下我對這兩種查詢方法的理解吧。

首先廣度優先查詢,bfs,它的乙個特點就是應用到了佇列的先進先出的特性,通過這個佇列來儲存第一次發現的節點,以便下一次的處理。

1/**

2* 3* @param target: 目標節點,要在哪個節點裡面進行搜尋

4* @param prop: 搜尋索引

5* 索引條件在islegal()裡面進行修改6*/

7function

breadthsearch(target)16}

17}18return

function

(prop) 24}

25return

targetnodelist;26}

27 }

其次是深度優先查詢,dfs,顧名思義這是一種「一探到底」的查詢演算法,它會一直搜尋到某乙個節點的最深處,再通過回溯的方法尋找到另外乙個節點的最深處,以此迴圈。

1/**

2* 3* @param target: 目標節點,要在哪個節點裡面進行搜尋

4* @param prop: 搜尋索引

5* 索引條件在islegal()裡面進行修改6*/

7function

depthsearch(target)15}

16}17deptheach(target);

18return

function

(prop) 24}

25return

targetnodelist;26}

27 }

優先查詢樹介紹

優先查詢樹 priority search tree 適於解決動態的已知區間集合的區間查詢問題。此問題間接地借助以下1.5維查詢問題來解 已給平面土的點集5,對給定的x1,x2和y列舉出s中所有包含在矩形r x1,x2 0,y 中的點,如圖所示。此處s是動態的,要求增刪方便,這要求對不同的查詢矩形r...

演算法筆記 020 深度優先查詢(Java)

目錄1 問題描述2 解決方案2.1 蠻力法 深度優先查詢 depth first search,dfs 可以從任意頂點開始訪問圖的頂點,然後把該頂點標記為已訪問。在每次迭代的時候,該演算法緊接著處理與當前頂點鄰接的未訪問頂點。這個過程一直持續,直到遇到乙個終點 該頂點的所有鄰接頂點都已被訪問過。在該...

深度優先和廣度優先

在爬蟲系統中,待抓取url佇列是很重要的一部分,待抓取url佇列中的url以什麼樣的順序排隊列也是乙個很重要的問題,因為這涉及到先抓取哪個頁面,後抓取哪個頁面。而決定這些url排列順序的方法,叫做抓取策略。下面是常用的兩種策略 深度優先 廣度優先 注 scrapy預設採用的是深度優先演算法 這裡是深...