剑指offer刷题笔记-32.从上到下打印二叉树 进阶

    科技2022-07-11  76

    涉及到二叉树的题目一般用stack实现bfs或者dfs,最好避免迭代法。 题目分层打印,与从左到右打印类似,依然使用bfs。之字形打印,只需要一个判定语句区分奇偶层然后用collections.deque双向队列实现快速的逆向打印。 关于collections.deque的用法,见链接 写代码思维练习:

    确定函数的输出res:list[list]需要那些变量:一个deque用来储存搜索节点,另一个deque用来储存每层的打印列表主体while循环的结束条件: deque为空,也就是整个树遍历完毕时while循环中需要处理的事项: 1)deque pop本层的node。 2)储存打印值(分奇偶)3)deque中存入所有本层节点的左右节点。 代码如下 class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not root: return [] res, deque = [], collections.deque([root]) while deque: tmp = collections.deque() for _ in range(len(deque)): node = deque.popleft() if len(res)%2==0: tmp.append(node.val) else: tmp.appendleft(node.val) if node.left: deque.append(node.left) if node.right:deque.append(node.right) res.append(list(tmp)) return res

    注意deque最后要cast回list()再append进res

    Processed: 0.008, SQL: 8