DFS、BFS模板
DFS
- 处理当前节点的位置不同对应着不同的遍历
def preorderTraversal(root):
if not root:
return
print(root.val) #前序遍历,处理当前节点
preorderTraversal(root.left) # 递归遍历左子树
print(root.val) #中序遍历,处理当前节点
preorderTraversal(root.right)# 递归遍历右子树
print(root.val) #后序遍历,处理当前节点
BFS
-
BFS使用队列,把每个还没有搜索到的点依次放入队列,然后再弹出队列的头部元素当做当前遍历点。BFS总共有两个模板:
-
如果不需要确定当前遍历到了哪一层,BFS模板如下
while queue 不空:
cur = queue.pop()
for 节点 in cur的所有相邻节点:
if 该节点有效且未访问过:
queue.push(该节点)
- 如果要确定当前遍历到了哪一层,BFS模板如下
level = 0 #表示当前遍历到二叉树中的哪一层了
while queue 不空:
size = queue.size() #size表示在当前遍历层有多少个元素
while (size --) {
cur = queue.pop()
for 节点 in cur的所有相邻节点:
if 该节点有效且未被访问过:
queue.push(该节点)
}
level ++;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人