二叉树层序遍历
二叉树的层序遍历,就是按层从上到下、从左到右遍历节点。
比如这棵树:
1 / \ 2 3 / \ / \ 4 5 6 7层序遍历结果是:
[1, 2, 3, 4, 5, 6, 7]如果要求按层返回,则是:
[ [1], [2, 3], [4, 5, 6, 7] ]一、思路
层序遍历的核心数据结构是:队列
因为队列是 先进先出:
- 先访问根节点
- 再访问第二层
- 再访问第三层
- 正好符合层序遍历的顺序
二、实现一:返回一维数组
function levelOrder(root) { if (!root) return []; const queue = [root]; const result = []; while (queue.length > 0) { const node = queue.shift(); result.push(node.val); if (node.left) queue.push(node.left); if (node.right) queue.push(node.right);