深度遍历与广度遍历

// 广度遍历平铺数据
const wideTraversal = (node) => {
var nodes = [];
if (node != null) {
const queue = [];
queue.unshift(node);
while (queue.length != 0) {
const item = queue.shift();
console.log("id:" + item.id, "level:" + item.level);
nodes.push(item);
const { children } = item;
for (let i = 0; i < children.length; i ++) {
queue.push(children[i]);
}
}
}
return nodes;
}
// 递归深度遍历添加level标签
const addLevel = (node) => {
const arr = node.children;
const recursive = (array, level = 0) => {
if (!Array.isArray(array)) return []
level++
return array.map(v => {
v.level = level
const child = v.children
if (child && child.length) recursive(child, level)
return v;
})
}
node.children = recursive(arr);
return node;
}
const measure = (node) => {
node = addLevel(node);
console.log("node", node);
node = wideTraversal(node);
return node;
}
const node = {
"id": 1,
"level": 0,
"children": [{
"id": 2,
"level": 0,
"children": [{
"id": 4,
"level": 0,
"children": []
}, {
"id": 5,
"level": 0,
"children": []
}, {
"id": 6,
"level": 0,
"children": []
}]
}, {
"id": 3,
"level": 0,
"children": []
}]
}

原文地址:https://www.cnblogs.com/zgdongyywei/p/14663503.html