已知數據結構,實現一個函數fn找出鏈條中所有的父級id

第 92 題:已知數據格式,實現一個函數 fn 找出鏈條中所有的父級 id

const value = '112'
const fn = (value) => {
...
}
fn(value) // 輸出 [1, 11, 112]

目前發現的最優題解,摘錄學習之

dfs

const fn = (data, value) => {
  let res = []
  const dfs = (arr, temp = []) => {
    for (const node of arr) {
      if (node.children) {
        dfs(node.children, temp.concat(node.id))
      } else {
        if (node.id === value) {
          res = temp
        }
        return
      }
    }
  }
  dfs(data)
  return res
}

作者是github: ZodiacSyndicate

dfs,英文全稱Depth First Search,顧名思義,即是深度優先搜索算法。
深度優先搜索屬於圖算法的一種,是一個針對圖和樹的遍歷算法。深度優先搜索是圖論中的經典算法,利用深度優先搜索算法可以產生目標圖的相應拓撲排序表,利用拓撲排序表可以方便的解決很多相關的圖論問題,如最大路徑問題等等。一般用棧數據結構來輔助實現DFS算法。其過程簡要來說是對每一個可能的分支路徑深入到不能再深入爲止,而且每個節點只能訪問一次。

相對應的有,bfs,英文全稱breadth first search,廣度優先搜索(也稱寬度優先搜索,縮寫BF)是連通圖的一種遍歷算法這一算法也是很多重要的圖的算法的原型。Dijkstra單源最短路徑算法和Prim最小生成樹算法都採用了和寬度優先搜索類似的思想。其別名又叫BFS,屬於一種盲目搜尋法,目的是系統地展開並檢查圖中的所有節點,以找尋結果。換句話說,它並不考慮結果的可能位置,徹底地搜索整張圖,直到找到結果爲止。基本過程,BFS是從根節點開始,沿着樹(圖)的寬度遍歷樹(圖)的節點。如果所有節點均被訪問,則算法中止。一般用隊列數據結構來輔助實現BFS算法。

題目來源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章