BFS算法中的级别跟踪

问题描述 投票:1回答:1

我有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;
    }
javascript tree nodes breadth-first-search levels
1个回答
0
投票
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;
    }

[抱歉,我在电话上打了。基本上在推送时将级别与节点一起添加。

© www.soinside.com 2019 - 2024. All rights reserved.