难度:中等
题目描述:
思路总结:层次遍历+insert头
题解一:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
from collections import deque
class Solution:
def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
#思路:这题还是用迭代,把之前层次遍历的队列换成栈
if not root:return []
queue = deque([root,])
res = []
cur_len = 0
level = 0 #加个标志位,偶数层从左往右,奇数层从右往左。
while queue:
tmp = []
cur_len = len(queue)
while cur_len > 0:
cur = queue.popleft()
if cur.left:queue.append(cur.left)
if cur.right:queue.append(cur.right)
if level % 2 == 0:
tmp.append(cur.val)
else:
tmp.insert(0, cur.val)
cur_len -= 1
level += 1
res.append(tmp)
return res
题解一结果: