当前位置: 首页 > java >正文

专题二:二叉树的深度优先搜索

以leetcode2331题为例  

题目分析:

以第一个示例为例

算法原理分析: 

从宏观角度,也就是我的算法之回溯的第一篇

我们发现我们在研究示例的时候,必须从下往上推

也就是我在研究一个结点是true还是false的时候,必须直到左孩子和右孩子是true还是false

包括我们研究整棵树也要直到左子树和右子树,小问题也是如此

所以我们可以这样定义我们的函数头   bool dfs(TreeNode*rooot);

dfs的作用,给一个结点指针就返回这个结点是true还是false

你要相信这个dfs能够完成任务,并不关心它是如何完成的

函数头: bool dfs(TreeNode*rooot);

函数体:bool left=dfs(root->left);//返回此时你这个结点左孩子的bool值

              bool right=dfs(root->right)//返回此时你这个结点右孩子的bool值

递归出口:

想一想什么时候是出口???(什么时候子问题不能在分成子问题)

当然是叶子结点的时候,你是叶子的时候就没必要直到左孩子和右孩子的值了吧

第二个角度看待:细节看待dfs 

这个你就想一下知道左/右才能知道根

所以就是后序遍历

代码编写:

http://www.xdnf.cn/news/5718.html

相关文章:

  • AI+Java开发项目——石头迷阵游戏
  • M0基础篇之DAC
  • LAN-402 全国产信号采集处理模块K7-325T(4通道采集)
  • LC滤波器与电感、电容的区别:技术分析与应用
  • springboot做junit单元测试详细步骤
  • 深入理解 iOS 开发中的 `use_frameworks!`
  • 大数据课设——基于电影数据集,分析导演影响力,绘制各种可视化图表
  • 【Linux】Linux内核的网络协议之socket理解
  • 丝杆升降机限位开关信号机制剖析与工程实践:从原理到 PLC 控制全流程解析
  • 监控易运维管理软件:架构稳健,组件强大
  • 使用 OAuth 2.0 保护 REST API
  • fetch post请求SSE「eventsource-parser/stream」
  • 网络基础知识梳理和Muduo库使用
  • 5月12日复盘-RNN
  • python打卡day23@浙大疏锦行
  • 【数据结构】双链表
  • 关于读写锁的一些理解
  • C++的构造函数和析构函数
  • 六、快速启动框架:SpringBoot3实战
  • RDB和AOF的区别
  • KUKA机器人中断编程2—中断相关的指令
  • 传导发射中的模拟手
  • P1460 [USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins
  • 【人工智能-agent】--Dify中MCP工具存数据到MySQL
  • 数据库实验报告 系统E-R图设计 2
  • [Git]ssh下用Tortoisegit每次提交都要输密码
  • el-table滚动条,都悬浮在页面的底层显示
  • 区块链技术构建电子发票平台“税链”
  • 2025年5月9日
  • CSPM-3 与 CSPM-4:项目管理认证的进阶之路