题目链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/
难度:中等

描述:
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

题解

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