题目链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/
难度:中等
描述:
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
题解
from collections import deque# 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 = rightclass Solution:def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:ret = []if not root:return retq = deque()q.append(root)level = 1while q:size = len(q)cur_level = []while size > 0:temp_node = q.popleft()cur_level.append(temp_node.val)if temp_node.left is not None:q.append(temp_node.left)if temp_node.right is not None:q.append(temp_node.right)size -= 1if level & 1 == 1:ret.append(cur_level)else:ret.append(cur_level[::-1]) # 这样要简单一点level += 1return ret
