leetcode-python-二叉树锯齿形遍历

逐层保存结果,然后判断奇数层反向。

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


class Solution:
    def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return []
        temp = [root]
        result = [[root.val]]
        while temp:
            length = len(temp)
            tempVal = []
            for _ in range(length):
                head = temp.pop(0)
                if head.left:
                    temp.append(head.left)
                    tempVal.append(head.left.val)
                if head.right:
                    temp.append(head.right)
                    tempVal.append(head.right.val)
            if tempVal != []:
                result.append(tempVal)
        for i in range(len(result)):
            if i % 2 != 0:
                result[i] = result[i][::-1]
        return result

 

posted @ 2021-06-16 16:25  泊鸽  阅读(45)  评论(0)    收藏  举报