给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
方案一:在层次遍历的基础上,添加一个变量用于判断当前层是奇数层还是偶数层
class Solution(object):
def zigzagLevelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
res = []
if not root:
return res
stack = [root] #
yy = []
k = 0 # 用于判断当前层是奇数层还是偶数层
while stack:
k += 1
y = []
l = len(stack)
for i in range(l):
cur = stack.pop(0)
y.append(cur.val)
if cur.left:
stack.append(cur.left)
if cur.right:
stack.append(cur.right)
if k % 2 == 1:
yy.append(y)
else:
yy.append(y[: : -1])
return yy