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