题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
# 解题思路
使用双端队列,奇数行打印的时候从左侧弹出,然后按照(节点左子,节点右子)append到队列;第二行打印的时候从右侧弹出,然后按照(节点右子,节点左子)的顺序appendleft到队列,可以写两段连续的代码,也可以通过设置level判断是奇数行还是偶数行
# 草稿内容
# 代码实现
import collections class Solution: def Print(self , pRoot: TreeNode) -> List[List[int]]: # write code here if not pRoot: return [] res = [] deque = collections.deque() deque.append(pRoot) level = 0 while deque: path = [] for _ in range(len(deque)): if level % 2 == 0: node = deque.popleft() path.append(node.val) if node.left: deque.append(node.left) if node.right: deque.append(node.right) else: node = deque.pop() path.append(node.val) if node.right: deque.appendleft(node.right) if node.left: deque.appendleft(node.left) res.append(list(path)) level += 1 return res