题目描述
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
3
/ \
9 20
/ \
15 7
输出为
[
[3],
[9,20],
[15,7]
]
思路分析
此题最简单的方案是使用递归。这道题非常适合用来练习递归思想。作者自己最近学习到了一套能够被表述出来的递归方案,描述如下:
1、 函数意义:将二叉树的同层数据都放在一个数组中输出
2、 边界条件: 二叉树为空
3、递归过程: 二叉树进行遍历输出,同层的放在一个数组(因此我们要先实现一个二叉树的输出)
代码实现
const __levelOrder = (root, res, index) => {
if (!root) return;
res[index] ? res[index].push(root.val) : res[index] = [root.val];
__levelOrder(root.left, res, index + 1);
__levelOrder(root.right, res, index + 1);
}
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrder = function(root) {
const res = [];
__levelOrder(root, res, 0);
return res;
};