mycode 99.24%

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def zigzagLevelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        if not root:
            return []
        self.res = [[]]
        def deal(level,root):
            if not root:
                return
            if len(self.res) <= level:
                self.res.append([])
            self.res[level].append(root.val)
            deal(level+1,root.left)
            deal(level+1,root.right)
        deal(0,root)
        for i,item in enumerate(self.res):
            if i%2 == 1:
                self.res[i] = item[::-1]          
        return self.res

 

参考:

精简下,把root=None的情况融合在下面一起 

class Solution(object):
    def zigzagLevelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        def deal(root,k):
            if root:
                if len(self.res) < k + 1:
                    self.res.append([])
                self.res[k].append(root.val)
                deal(root.left,k+1)
                deal(root.right,k+1)
        
        self.res = []
        deal(root,0)
        for i in range(len(self.res)):
            if i%2 == 1:
                self.res[i] = self.res[i][::-1]
        return self.res