Leetcode 劍指 Offer 32 - III.從上到下打印二叉樹 III
1 題目描述(Leetcode題目鏈接)
請實現一個函數按照之字形順序打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右到左的順序打印,第三行再按照從左到右的順序打印,其他行以此類推
3
/ \
9 20
/ \
15 7
[
[3],
[20,9],
[15,7]
]
提示:節點總數 <= 1000
2 題解
層序遍歷
# 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 []
res = []
queue = collections.deque([root])
tag = 0
while queue:
cur = []
num = len(queue)
while num:
num -= 1
node = queue.popleft()
cur.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
if tag:
cur = cur[::-1]
tag ^= 1
res.append(cur)
return res