题目
My way
手动队列BFS
1 | /** |
时间:\(O(N)\), 空间:\(O(N)\)
官方way
递归
1 | class Solution { |
时间:\(O(N)\), 空间:\(O(N)+O(logN)= O(N)\),因为递归自动压栈需要维护一个栈,故空间上常数项系数更大
1 | /** |
优化递归函数helper
后:
1 | /** |
总结
错误点:
- 需要提前用哨兵记住队列的长度
size
, 否则在遍历对应层时,长度不断变大,影响结果 - 对入队的结点来说,只需要入队左右子树非空结点即可。
- 递归方式BFS实现层次遍历时,需要在
vector<vector<int>>
的对应层数上存储,所以在helper
函数上,需要传参
Reference
https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/er-cha-shu-de-ceng-ci-bian-li-by-leetcode/
https://leetcode-cn.com/problems/binary-tree-level-order-traversal/solution/er-cha-shu-ceng-ci-bian-li-c-by-huang-fu-mai-yan/