跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言算法

二叉树深度优先搜索算法入门详解

介绍二叉树深度优先搜索(DFS)算法,通过递归方式解决布尔二叉树求值和根到叶节点路径数字之和问题。阐述了递归出口设计、函数体逻辑及子任务分解方法,帮助读者理解二叉树遍历的核心思想。

PentesterX发布于 2026/3/26更新于 2026/10/26109 浏览
二叉树深度优先搜索算法入门详解

图

动图

二叉树深搜的简单介绍

图

计算布尔二叉树的值

LeetCode 题目链接

题目解析

图

算法原理

对于完全二叉树,一个节点要么都有左右孩子,或者为叶子节点。

图

如果我们要算一棵完全二叉树根节点的值,就要先算出这个根节点左子树的值以及右子树的值的整合结果,得到的结果和根节点的运算符再次进行整合,最终得到根节点的 boolean 结果。

图

解法:递归 DFS

函数头

根据上述算法原理,我们可以总结出函数头 boolean dfs(root)。

函数体

我们需要根据下面的三步来设计函数体:

图

所以可以总结函数体:

图

我们只需要相信:dfs() 可以帮助我们完成整合所传入节点的最终结果即可。

递归出口

在遍历到叶子节点时,只需要返回叶子节点值 true 或者 false 即可;这也是我们的递归出口。

编写代码

注意:要根据每一个节点的 val,来决定返回的值是 true 或者 false。

图

求根节点到叶节点数字之和

LeetCode 题目链接

题目解析

图

算法原理

解法:递归

我们之前说过,可以把 dfs 看作是一个黑盒,把要完成的任务放心交给它处理即可。但是如果 dfs 要处理的任务过多,是比较难叙述清楚的,这个时候我们该怎样解决呢?

我们根据如下完全二叉树来作为本题的例子,并且解决上述问题:

图

由题意可得:

图

在算出每条分支代表的数之后,我们需要根据算术方法,来总结出子问题,在递归到二叉树的每一层时,找出会重复执行的子任务;所以我们只关心递归到某一层时,会做的任务:

图

在递归到 5 节点时,需要执行的任务有两种:

拿到 8 和

目录

  1. 二叉树深搜的简单介绍
  2. 计算布尔二叉树的值
  3. 题目解析
  4. 算法原理
  5. 解法:递归 DFS
  6. 函数头
  7. 函数体
  8. 递归出口
  9. 编写代码
  10. 求根节点到叶节点数字之和
  11. 题目解析
  12. 算法原理
  13. 解法:递归

更多推荐文章

查看全部
  • C++26 CPU 资源隔离机制与性能优化实践
  • C++ 类与对象核心知识点总结
  • WebLaTeX:基于 VSCode 的在线 LaTeX 编辑器
  • 从 Python 到 OpenClaw:构建本地全能 AI 助理的学习路径
  • Llama-3.2V-11B-COT 部署:Triton 推理服务封装与压测
  • 国内 20 家大厂大模型岗位面试复盘与技术要点总结
  • ESP32C3SuperMini 基于 Arduino 实现 Web 控制 LED
  • JiuwenClaw AI 智能体工具安装与核心功能解析
  • 鸿蒙 5.0/6.0 第三方应用侧载与小白调试助手使用指南
  • Python 爬虫副业指南:主流接单平台与注意事项
  • LeetCode 962 最大宽度坡的 C 语言做法
  • 大模型应用落地难点分析与解决方案
  • Stable Diffusion 皮革服装 LoRA 模型部署与使用指南
  • Spring Cloud 远程调用:OpenFeign 优雅实践
  • Stable Diffusion 入门指南:原理、应用与使用技巧
  • Spring Boot Web 三大核心交互案例:表单、AJAX 与 JSON
  • 前端核心知识点梳理与面试复习指南
  • LazyLLM 多 Agent 应用实践:从源码部署到可视化 Web 调试
  • ChatGPT 与 DALL·E 制作日漫风格小故事全流程
  • AgentScope Java:阿里开源的 LLM 智能体框架

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online