网络异常,图片无法展示
|
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [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
如有任何问题或建议,欢迎留言讨论!