leetcode103 Binary Tree Zigzag Level Order Traversal

 1 """
 2 自己AC
 3 为了实现Z字形遍历
 4 记录了二叉树的depth,如果depth为2的倍数
 5 将得到的值reverse()处理一下再存入res中
 6 """
 7 
 8 class TreeNode:
 9     def __init__(self, x):
10         self.val = x
11         self.left = None
12         self.right = None
13 
14 class Solution:
15     def zigzagLevelOrder(self, root):
16         if not root:
17             return []
18         res = []
19         queue = []
20         queue.append(root)
21         depth = 1
22         while queue:
23             cur = []
24             for x in queue:
25                 cur.append(x.val)
26             if depth % 2 == 0:#bug 写进for循环里了
27                 cur.reverse()
28             res.append(cur)
29             newqueue = []
30             for x in queue:
31                 if x.left:
32                     newqueue.append(x.left)
33                 if x.right:
34                     newqueue.append(x.right)
35             queue = newqueue
36             depth += 1
37         return res

 

posted @ 2020-02-28 00:46  yawenw  阅读(89)  评论(0编辑  收藏  举报