题目链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/
难度:中等
描述:
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
题解
# 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]]:
ret = []
q = deque()
if root is not None:
q.append(root)
level = 1
while q:
size = len(q)
temp_node = []
while size > 0:
cur = q.popleft()
temp_node.append(cur.val)
if cur.left:
q.append(cur.left)
if cur.right:
q.append(cur.right)
size -= 1
if level % 2 == 1:
ret.append(temp_node)
else:
ret.append(temp_node[::-1])
level += 1
return ret