由於最近在做的專案中設計到了虛擬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預設採用的是深度優先演算法 這裡是深...