📜  javascript中的树遍历递归(1)

📅  最后修改于: 2023-12-03 15:16:17.437000             🧑  作者: Mango

JavaScript中的树遍历递归

树是一种非线性结构,由节点和边组成。在 JavaScript 中,树可以使用对象进行表示。树遍历是指按照某种顺序访问树中的每一个节点,树遍历递归是一种常见的实现方式。

深度优先遍历

深度优先遍历是一种先访问子节点再访问兄弟节点的遍历方式。深度优先遍历可以使用递归实现。

// 深度优先遍历
function dfs(node) {
  console.log(node.value);
  if (node.children) {
    node.children.forEach((child) => dfs(child));
  }
}

以上代码定义了一个 dfs 函数,参数为根节点。函数首先输出当前节点的值,然后递归调用每个子节点的 dfs 函数。这样就可以完成深度优先遍历。

广度优先遍历

广度优先遍历是先访问同一层级节点,再访问下一层节点的遍历方式。广度优先遍历可以使用队列实现。

// 广度优先遍历
function bfs(node) {
  const queue = [node];
  while (queue.length) {
    const cur = queue.shift();
    console.log(cur.value);
    if (cur.children) {
      cur.children.forEach((child) => queue.push(child));
    }
  }
}

以上代码定义了一个 bfs 函数,参数为根节点。函数使用队列存储每一层级的节点,首先弹出队首节点,然后输出该节点的值,最后将子节点入队。这样就可以完成广度优先遍历。

总结

树遍历是一种常见的算法问题,深度优先遍历和广度优先遍历是两种基本的遍历方式。递归是实现深度优先遍历的常见方式,队列是实现广度优先遍历的常见方式。