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