102. 二叉树的层序遍历(广度优先)

Posted 沿着路走到底

tags:

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

1

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) 
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * 
 */
/**
 * @param TreeNode root
 * @return number[][]
 */
var levelOrder = function(root) 
  const res = []

  if (!root) 
    return res
  

  // 声明队列用于存储后续数据
  const queue = []
  queue.push(root)

  // 遍历队列
  while(queue.length) 
    // 针对本轮操作,创建一个新的二维数组
    res.push([])

    const len = queue.length
    for(let i = 0; i < len; i++) 
      // 将本次操作的节点出队
      const node = queue.shift()
      res[res.length-1].push(node.val)

      // 检测是否存在左右子节点,如果有,就入队
      if (node.left) 
        queue.push(node.left)
      
      if (node.right) 
        queue.push(node.right)
      
    
  

  return res
;

1

以上是关于102. 二叉树的层序遍历(广度优先)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Java刷题笔记—102. 二叉树的层序遍历

二叉树算法—广度搜索算法使用以及变形

LeetCode Algorithm 102. 二叉树的层序遍历

LeetCode Algorithm 102. 二叉树的层序遍历

NC15 求二叉树的层序遍历

树-广度优先层次遍历