树的深度优先遍历和广度优先遍历

Posted 沿着路走到底

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树的深度优先遍历和广度优先遍历相关的知识,希望对你有一定的参考价值。

1

const tree = 
  val: 'a',
  children: [
      
          val: 'b',
          children: [
              
                  val: 'd',
                  children: [],
              ,
              
                  val: 'e',
                  children: [],
              
          ],
      ,
      
          val: 'c',
          children: [
              
                  val: 'f',
                  children: [],
              ,
              
                  val: 'g',
                  children: [],
              
          ],
      
  ],
;

/*
  深度优先遍历
  访问根节点
  对根节点的 children 挨个进行深度优先遍历
*/
function dfs (root) 
  console.log(root.val)
  root.children.forEach(child => dfs(child))


/*
  广度优先遍历
  新建一个队列,把根节点入队
  把队头出队并访问
  把队头的 children 挨个入队
  重复第二、三步,直到队列为空
*/
function bfs (root) 
  const q = [root]

  while(q.length) 
    const n = q.shift()
    console.log(n.val)

    n.children.forEach(child => 
      q.push(child)
    )
  

1

以上是关于树的深度优先遍历和广度优先遍历的主要内容,如果未能解决你的问题,请参考以下文章

多级树的深度优先遍历与广度优先遍历(Java实现)

JavaScript实现树的深度优先遍历和广度优先遍历

树的深度优先遍历和广度优先遍历

二叉树的深度和广度优先遍历

二叉树的深度优先遍历和广度优先遍历

Python二叉树的三种深度优先遍历