树遍历(深度优先和广度优先)
生活随笔
收集整理的這篇文章主要介紹了
树遍历(深度优先和广度优先)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
深度優先
先序遍歷
后序遍歷
廣度優先
對于樹結構的遍歷一般有深度優先和廣度優先
廣度優先和深度優先的概念很簡單,區別如下:
-
深度優先,訪問完一顆子樹再去訪問后面的子樹,而訪問子樹的時候,先訪問根再訪問根的子樹,稱為先序遍歷;先訪問子樹再訪問根,稱為后序遍歷。
-
廣度優先,即訪問樹結構的第 n+1 層前必須先訪問完第 n 層
深度優先
先序遍歷
const treeForEach = (tree, func) => {tree.forEach(data => {func(data);data.children && treeForEach(data.children, func);}); };后序遍歷
只需要調換一下節點遍歷和子樹遍歷的順序即可
const treeForEach = (tree, func) => {tree.forEach(data => {data.children && treeForEach(data.children, func);func(data);}); };廣度優先
?廣度優先的思路是,維護一個隊列,隊列的初始值為樹結構根節點組成的列表,重復執行以下步驟直到隊列為空。取出隊列中的第一個元素,進行訪問相關操作,然后將其后代元素(如果有)全部追加到隊列最后。
const treeForEach = (tree, func) => {let node,list = [...tree];while ((node = list.shift())) {func(node);node.children && list.push(...node.children);} };總結
以上是生活随笔為你收集整理的树遍历(深度优先和广度优先)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSP四大作用域(9大内置对象)
- 下一篇: SPSS正交设计的操作