题目

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

例如:
给定二叉树: [3,9,20,null,null,15,7],
image.png
https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/

思路

用队列先进先出的特点实现层次遍历,也就是广度优先搜索dfs

代码

  1. class Solution:
  2. def levelOrder(self, root: TreeNode) -> List[int]:
  3. # 二叉树的层次遍历bfs
  4. if not root:
  5. return []
  6. ans = []
  7. queue = [root]
  8. while queue:
  9. # tmp_queue = queue[:]
  10. for node in queue[:]:
  11. ans.append(node.val)
  12. queue.pop(0)
  13. if node.left:
  14. queue.append(node.left)
  15. if node.right:
  16. queue.append(node.right)
  17. return ans