创建JS树
function createTee(len) { const tree = []; while (len--) { tree.unshift({ key: len, children: [ { key: len + 10, children: [ {key: len + 100} ] } ] }); } return tree;}
深度优先遍历DFS与广度优先遍历BFS
function deepTraversal(tree) { /** * 深度优先遍历 递归版本 for (let item of tree) { console.log(item.key); if (item.children && item.children.length) deepTraversal(item.children); } **/ /** * 深度优先遍历 非递归版本 let nodes = [...tree]; while (nodes.length) { const node = nodes.shift(); const list = [node]; node.children && nodes.unshift(...node.children); for (let item of list) { console.log(item.key); } } **/ /** * 广度优先遍历 非递归版本 let nodes = [...tree]; while (nodes.length) { const list = nodes.splice(0, 1); for (let item of list) { item.children && item.children.length && nodes.push(...item.children); console.log(item.key); } } **/ /** * 广度优先遍历 递归版本 let nodes = []; for (let item of tree) { console.log(item.key); if (item.children && item.children.length) nodes.push(...item.children); } nodes.length && deepTraversal(nodes); **/}deepTraversal(createTee(10));