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

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

以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.dtcms.com/a/187170.html

相关文章:

  • 【Python爬虫】01-Python爬虫概述
  • vLLM中paged attention算子分析
  • 客户端限流主要采用手段:纯前端验证码、禁用按钮、调用限制和假排队
  • 如何理解“数组也是对象“——Java中的数组
  • 【程序员AI入门:开发】12.AI Agent 革命:从聊天机器人到智能工作流的跃迁
  • langchain4j集成QWen、Redis聊天记忆持久化
  • 基于Arduino的贪吃蛇游戏机
  • 一、网络基础
  • 普通IT的股票交易成长史--20250512复盘
  • 【速写】use_cache参数与decode再探讨
  • 【嵌入式系统设计师(软考中级)】第三章:嵌入式系统软件基础知识——①软件及操作系统基础
  • 电脑端音乐播放器推荐:提升你的听歌体验!
  • 免费多线程下载工具
  • 数字人教学技术与产品方案的全面解析
  • 【论信息系统项目的质量管理】
  • MySQL创建了一个索引表,如何来验证这个索引表是否使用了呢?
  • 在Windows 境下,将Redis和Nginx注册为服务。
  • 自适应主从复制模拟器的构建与研究
  • 使用ACE-Step在本地生成AI音乐
  • 双向链表专题
  • DAY05:深入解析生命周期与钩子函数
  • MYSQL事务原理分析(三)
  • nginx配置sse流传输问题:直到所有内容返回后才往下传输
  • java反序列化commons-collections链6
  • LVGL(lv_switch开关)
  • 输出重定向
  • 位运算题目:黑板异或游戏
  • 牛客周赛 Round 92
  • ComfyUI的K采样器参数详解:实战演示
  • Python 实现失败重试功能的几种方法