题目:

思路:
法一:1.根节点为空,直接返回空数组;
根节点不为空,设置递归函数,输入二叉树和当前所在的层
2.递归函数里,
如果根节点的值不为空,并且层数对应的返回结果元素result[depth]为空,就先将对应的 result[depth]设置为[],再将当前节点的值和对应的result[depth]解构到返回结果中
如果根节点的值不为空,层数对应的返回结果元素result[depth]不为空,则直接将当前 节点的值和对应的result[depth]解构到返回结果中
再换到下一层
3.再递归(右子树、当前深度)和(左子树、当前深度),反转即可

代码实现:

法二:
思路:时间复杂度为O(n)
首先,异常判断,把根节点添加到当前层中去,遍历当前层的每个元素,再对应到当前节点,将对应的左右子树添加到下一层数组中去
其次,将当前层的节点值添加到最终结果中,并将下一层换到当前层,下一层重置;循环
最后将结果反转即可




优化:

网友评论