我有this amazing source的bfs算法。由于我的树不是二叉树,因此我不使用左右引用,而是使用namedChildren,这给了我所有子节点的数组。我想知道如何扩展代码以跟踪某个级别。您有什么建议吗?
function bfs(root) {
let visited = [];
let queue = [];
let current = root;
let level=0;
queue.push(current);
while (queue.length) {
current = queue.shift();
visited.push(current);
current.namedChildren.forEach((item, i) => {
queue.push(item);
});
};
return visited;
}
function bfs(root) {
let visited = [];
let queue = [];
let level=0;
let current = [root, level];
queue.push(current);
while (queue.length) {
current = queue.shift();
visited.push(current);
level = current[1];
current[0].namedChildren.forEach((item, i) => {
queue.push([item, level + 1]);
});
};
return visited;
}
[抱歉,我在电话上打了。基本上在推送时将级别与节点一起添加。