题目描述:
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
示例:
题解:用BFS + for循环加入当前层的所有元素+加入个奇偶层判断
# 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]]:
from collections import deque
if not root:
return []
queue = deque()
queue.append(root)
result = []
num = 1
while queue:
tmp = []
for _ in range(len(queue)):
node = queue.popleft()
tmp.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
#判断当前层是否为偶数
if num % 2 == 0:
#tmp.reverse()返回值为0,如果想append,应该分步
tmp.reverse()
result.append(tmp)
#result.append(tmp[::-1])
num = num + 1
else:
result.append(tmp)
num = num + 1
return result