102. Binary Tree Level Order Traversal

87 阅读1分钟

102. Binary Tree Level Order Traversal

解题思路

  1. 首先root根节点是 0 =》[[root.val]]
  2. 那么第1层节点的话直接判断有没有,完了再推入 1 =》[[root.val], [root.left.val], [root.right.val]]
  3. 如意发现这是个递归, 那么递归需要向下传递的数据是 iter(root.left, 1, res) node节点,level对应数组的第几项,res也就是记录数据的结果
  4. 容易发现递归的终止条件就是 node === null
  5. 那么就可以利用递归解决这个问题了

代码

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function (root) {
    if (root === null) return []

    const res = [[root.val]]

    const iter = (node, level, res) => {
        if (node === null) return
        if (!res[level]) {
            res[level] = []
        }

        res[level].push(node.val)
        
        iter(node.left, level + 1, res)
        iter(node.right, level + 1, res)

    }

    iter(root.left, 1, res)
    iter(root.right, 1, res)

    return res
};