题目描述
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
本题很简单,只是将前序遍历的结果每一层放在一个子数组
只需要在前序遍历的过程中,记录当前节点的深度,然后将节点值放入结果数组对应子数组
遍历完成后,返回结果数组即可
代码如下:
var levelOrder = function(root) {
// 初始化结果数组
const res = [];
// 前序遍历函数
function preorder(node,deep){
// 如果当前节点为 null,退出递归
if(node === null) return;
// 如果当前深度对应子数组未创建,创建子数组
if(!res[deep]) res[deep] = [];
// 将节点值插入对应子数组
res[deep].push(node.val);
// 递归处理左右子树
preorder(node.left,deep+1);
preorder(node.right,deep+1);
}
// 调用前序遍历方法
preorder(root,0);
// 返回结果数组
return res;
};
至此我们就完成了 leetcode-剑指 Offer 32 - II-从上到下打印二叉树 II