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

专题二:二叉树的深度搜索(二叉树剪枝)

以leetcode814题为例

题目分析: 

也就是当你的子树全为0的时候就可以剪掉

算法原理分析:

首先分析问题,你子树全为0的时候才可以干掉,我们可以设递归到某一层的时候如何处理

然后抽象出三个核心问题

也就是假设我们递归到第2层,左边那个0;

你要知道这个0能不能删掉,是不是要知道左子树是否全为0,右子树是否全为0

接着递归左子树一直到叶子结点,知道是叶子节点就不必要返回了

因为叶子结点的左结点是nullptr,右节点也是返回nullptr,所以叶子判断叶子能不能删除就在它的val,如果val等于0,那这个叶子就可以删掉(delete,然后在nullptr让上一层连接起来是空,或者直接返回null,但这样会造成内存泄漏),如果等于1,就返回上层这个结点,让其连接起来

所有的结点都是接受左子树的返回值,右子树的返回值,然后判断自己的val

所以可以抽象出来dfs:dfs就是给你一个结点,返回它删除完所有的子树全为0的新结点

注意要返回之后要连接起来,你没有连接起来就是有问题

代码编写:

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

相关文章:

  • tryhackme——Lateral Movement and Pivoting
  • 状态压缩动态规划:用二进制“魔法”破解组合难题
  • 利用D435i相机进行SLAM实现建图的关键环节-----Kalibr标定工具以及常见的问题调试
  • idea查看pom文件依赖
  • qtcreator导入帮助文档
  • 为什么 mac os .bashrc 没有自动加载?
  • 按钮导航组件 | 纯血鸿蒙组件库AUI
  • 文本数据可视化
  • 5.5.1 WPF中的动画2-基于路径的动画
  • P2P架构
  • vue3: pdf.js 3.4.120 using javascript
  • 数据库约束
  • 学习黑客5 分钟深入浅出理解Windows Firewall
  • AI 在模仿历史语言方面面临挑战:大型语言模型在生成历史风格文本时的困境与研究进展
  • 【AI提示词】PEST分析
  • 智慧城市综合运营管理系统Axure原型
  • Kotlin 内联函数(Inline Functions):性能优化与实战指南
  • Gmsh划分网格|四点矩形
  • Clinica集成化的开源平台-神经影像研究
  • 题海拾贝:P10468 兔子与兔子
  • 面试题:请解释Java中的设计模式,并举例说明单例模式(Singleton Pattern)的实现方式
  • [网络层]网络层设备路由器
  • 端到端音频聊天模型论文速读:Voila
  • 基于STM32、HAL库的DPS310XTSA1 气压传感器 驱动程序设计
  • Parasoft C++Test软件单元测试_实例讲解(指针类型的处理)
  • 【计算机网络】HTTP 协议
  • 【星海随笔】信息安全法律法规概述
  • 大数据模型的构建与优化
  • LeetCode 941. 有效的山脉数组 java题解
  • Yocto 项目中的 glibc 编译失败全解析:原因、原理与修复策略