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 ++;
posted @   Frommoon  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示