LeetCode: 二叉树的锯齿形遍历
给定一个二叉树,返回其节点值的
锯齿形层次遍历:(即 先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)
例如:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回锯齿形层次遍历如下:
[
[3],
[20,9],
[15,7]
]
insert()方法语法: list.insert(index, obj)
参数:
index – 对象 obj 需要插入的索引位置。
obj – 要插入列表中的对象
思路: 基于层次遍历,1右、2左、3右......
定义二叉树:
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
基于层次遍历的,锯齿形层次遍历:
# 基于层次遍历,1右、2左、3右......
from typing import List
class Solution:
def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
res = []
if not root: return root
cur_level=[root]
sign=-1
while cur_level:
temp,next_level=[],[]
for node in cur_level:
temp.append(node.val)
if node.left:
next_level.append(node.left)
if node.right:
next_level.append(node.right)
sign=sign*(-1)
res.append(temp[::sign])
cur_level=next_level
return res