题目链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
难度:中等

描述:
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

题解

  1. from collections import deque
  2. # Definition for a binary tree node.
  3. # class TreeNode:
  4. # def __init__(self, val=0, left=None, right=None):
  5. # self.val = val
  6. # self.left = left
  7. # self.right = right
  8. class Solution:
  9. def levelOrder(self, root: TreeNode) -> List[List[int]]:
  10. ret = []
  11. if not root:
  12. return ret
  13. q = deque()
  14. q.append(root)
  15. while q:
  16. size = len(q)
  17. cur_level = []
  18. while size > 0:
  19. temp_node = q.popleft()
  20. cur_level.append(temp_node.val)
  21. if temp_node.left is not None:
  22. q.append(temp_node.left)
  23. if temp_node.right is not None:
  24. q.append(temp_node.right)
  25. size -= 1
  26. ret.append(cur_level)
  27. return ret
  1. # Definition for a binary tree node.
  2. # class TreeNode:
  3. # def __init__(self, val=0, left=None, right=None):
  4. # self.val = val
  5. # self.left = left
  6. # self.right = right
  7. class Solution:
  8. def levelOrder(self, root: TreeNode) -> List[List[int]]:
  9. ret = []
  10. if not root:
  11. return ret
  12. def dfs(node, level):
  13. if node is None:
  14. return
  15. if level >= len(ret):
  16. ret.append([])
  17. ret[level].append(node.val)
  18. if node.left is not None:
  19. dfs(node.left, level+1)
  20. if node.right is not None:
  21. dfs(node.right, level+1)
  22. dfs(root, 0)
  23. return ret