题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
说明:本题目包含复杂数据结构TreeNode,点此查看相关信息

  1. # -*- coding:utf-8 -*-
  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 Print(self, pRoot):
  9. # write code here
  10. if not pRoot:
  11. return []
  12. ret = []
  13. curr_stack = [pRoot]
  14. while curr_stack:
  15. next_stack = []
  16. curr_vals = []
  17. for node in curr_stack:
  18. if node.left:
  19. next_stack.append(node.left)
  20. if node.right:
  21. next_stack.append(node.right)
  22. curr_vals.append(node.val)
  23. curr_stack = next_stack
  24. ret.append(curr_vals)
  25. result = []
  26. for i,v in enumerate(ret):
  27. if i%2==0:
  28. result.append(v)
  29. else:
  30. result.append(v[::-1])
  31. return result