题目:103. 二叉树的锯齿形层次遍历
链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15,7] ]
解题:
1、队列,先进先出,偶数行的遍历结果需要翻转。
代码:
# 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]]
"""
if not root:
return []
flag = True
nodes = [root]
res = []
while len(nodes) > 0:
tmp = []
ls = []
for node in nodes:
ls.append(node.val)
if node.left:
tmp.append(node.left)
if node.right:
tmp.append(node.right)
nodes = tmp
# print(ls)
if flag:
flag = False
else:
flag = True
ls = ls[::-1]
res.append(ls)
return res
PS:刷了打卡群的题,再刷另一道题,并且总结,确实耗费很多时间。如果时间不够,以后的更新会总结打卡群的题。
PPS:还是得日更呀,总结一下总是好的。