二叉树的层次遍历题型通用思路:
1.首先判断是用bfs还是dfs(这里的三道题因为是按层返回所以都用bfs来实现)
2.判断一下是用先进后出的栈还是先进先出的队列来保存数据
3.划分当前层和下一层,逐层返回即可。
下面是例题:
Leetcode 107. 二叉树的层次遍历https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/:
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
class Solution:
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
from collections import deque
if not root: return []
queue = deque()
queue.appendleft(root)
res = []
while queue:
tmp = []
n = len(queue)
for _ in range(n):
node = queue.pop()
tmp.append(node.val)