额,我就是把jz032II在tmp里存好每一层的时候间隔着反转了一下数组然后加入了答案中。应该不是这样做的吧?额看了一下好像这种实现也还行,我就不来讨论别的解法了,因为看起来代码也没有更加简洁之类的。这个算法的时间复杂度是O(N),空间复杂度是O(N)。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
queue, res = [root], []
flag = True
while queue:
tmp = []
for _ in range(len(queue)):
node = queue.pop(0)
tmp.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
if flag:
flag = False
else:
flag = True
tmp = tmp[::-1]
res.append(tmp)
return res
PREVIOUSjz032II.从上到下打印二叉树II