103. 二叉树的锯齿形层序遍历

题目-中等难度

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

示例

示例 1:
103. 二叉树的锯齿形层序遍历-LMLPHP

示例 2:

示例 3:

提示:

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1. bfs

时间
24ms
击败 32.49%使用 Python 的用户
内存
12.79MB
击败 81.07%使用 Python 的用户

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def zigzagLevelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """
        li = [root]
        res = []
        flag = -1
        while li:
            resLi = []
            for _ in range(len(li)):
                a = li.pop(0)
                if a:
                    resLi.append(a.val)
                    if a.left:
                        li.append(a.left)
                    if a.right:
                        li.append(a.right)
            if resLi:
                flag = -flag
                if flag == -1:
                    resLi = resLi[::-1]
                res.append(resLi)
        return res

09-11 07:44