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

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

以leetcode814题为例

题目分析: 

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

算法原理分析:

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

然后抽象出三个核心问题

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

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

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

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

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

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

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

代码编写:

相关文章:

  • 《 C++ 点滴漫谈: 三十七 》左值?右值?完美转发?C++ 引用的真相超乎你想象!
  • GB/T 17626.5-2019浪涌抗扰度【研读笔记】
  • IOP|2025第二届机电一体化、机器人与控制系统国际会议(MRCS2025)
  • 在选择合适的实验室铁地板和铸铁试验平板,帮分析​
  • 【机器人】复现 UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025
  • 2025年阿里云ACP大数据分析师认证模拟试题(附答案解析)
  • Android Framework
  • Python实例题:Django搭建简易博客
  • 力扣HOT100之二叉树:226. 翻转二叉树
  • arduinoIDE核心库更新导致的ESP32开发板神秘接口更换和三方库冲突
  • JVM——方法内联
  • zuoyyyeee
  • hdfs-客户端操作-文件上传
  • Java中String字符串
  • STM32实现循环队列
  • AutoDL租用服务器教程
  • uniapp引入七鱼客服微信小程序SDK
  • cache state
  • 自动化测试与功能测试详解
  • 杨校老师项目之基于SSM与JSP的鲜花销售系统-【成品设计含文档】
  • 甩掉“肥胖刺客”,科学减重指南来了
  • 27岁杨阳拟任苏木镇党委副职,系2020年内蒙古自治区选调生
  • “80后”李灿已任重庆市南川区领导,此前获公示拟提名为副区长人选
  • 成都锦江区一在建工地起火,致2人遇难1人受伤
  • 长沙潮宗街内“金丝楠木老屋文旅博物馆”起火:明火已扑灭,无伤亡
  • 正荣地产:前4个月销售14.96亿元,控股股东已获委任联合清盘人