[路飞]剑指 Offer 32 - II. 从上到下打印二叉树 II

148 阅读1分钟

题目描述

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。


    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;
};