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

Leetcode 二叉树剪枝

在这里插入图片描述

java solution

class Solution {
    public TreeNode pruneTree(TreeNode root) {
        //递归后序遍历来解决此题
        if(root == null) return null;

        //先剪枝左右子树
        root.left = pruneTree(root.left);
        root.right = pruneTree(root.right);

        //然后处理当前节点

        if(root.val == 0 && root.left == null && root.right == null) {
            return null;
        }
        //否则,保留当前节点
        return root;
    }
}

这部分代码片段,为什么判断条件不是 root.val == 0 && root.left.val == 0 && root.right.val == 0

if (root.val == 0 && root.left == null && root.right == null) {
            return null;
}

root.left == nullroot.right == null 的判断是 判断子树是否已经被剪掉(即不存在),而不是判断子节点的值是否为 0。


👇 详细解释如下:

root.left == 0 && root.right == 0 —— 错误的写法
  • root.leftroot.rightTreeNode 类型,不是整数,不能直接用 == 0 比较。
  • 即使你访问的是值(比如 root.left.val == 0),也不够,因为:
    • 即使 val == 0,只判断这一层还不够,整个子树里也可能包含 1,那这个子树就不能剪掉。
root.left == null && root.right == null —— 正确的做法
  • 表示 当前节点的左子树和右子树都已经被递归剪掉了(要么原本是空的,要么在递归过程中被剪为 null)。
  • 然后再判断当前节点的值:
    • 如果是 0,那么这个节点及其所有后代都不包含 1,就应该被剪掉,返回 null
    • 如果是 1,即使左右子树都为空,也要保留这个节点。

🔄 递归的核心思想:

在后序遍历中,我们是先把左子树和右子树递归“剪干净”后,才处理当前节点。

所以:

root.left = pruneTree(root.left);
root.right = pruneTree(root.right);

之后,root.leftroot.right 已经是处理完的结果 —— 如果某一子树里没有 1,它就已经是 null

这时候判断:

if (root.val == 0 && root.left == null && root.right == null)

意味着:

当前节点是 0,并且它的子树中没有 1 —— 满足“整棵子树没有 1”的条件,因此需要剪掉。

相关文章:

  • UI产品经理基础(四):用价值链视角来分析项目需求
  • HCIP笔记整理
  • ctf-web:命令注入 -- Cyber Apocalypse CTF 2025 月光的低语 Whispers of the Moonbeam
  • 【面试题】在 CSS 中,实现一个 div 中的子 div 水平垂直居中
  • 接口测试中数据库验证,怎么解决?
  • 【Qt】modbus客户端笔记
  • Java基础学习【Java】【三】
  • 编辑器检视器面板简单扩展2+编辑器检视器面板深度扩展1
  • 【天梯赛】L2-008 最长对称字串(C++)
  • browser-use 库中异步函数执行时间装饰器
  • 搭建私人对外git空间
  • 内网渗透-DLL和C语言加载木马
  • OpenCV图像拼接(9)实现图像拼接功能的一个高级接口cv::Stitcher
  • C++面试题库
  • 【已解决】Git:为什么 .gitignore 不生效?如何停止跟踪已提交文件并阻止推送?
  • 算法 | 2024最新算法:鳑鲏鱼优化算法原理,公式,应用,算法改进研究综述,matlab代码
  • 科软25机试
  • 【服务端】使用conda虚拟环境部署Django项目
  • ESP32-CAM在PlatformIO IDE里实现OTA的几个小TIPS
  • java程序员实用英语学习总结
  • 学做网站好做吗/中国突然宣布大消息
  • 5g网站建设公司/竞价系统
  • 网站备案照片/2022年传销最新消息
  • 免费手机网站制作app/新站整站快速排名
  • 艺术学校示范校建设专题网站/排名优化网站seo排名
  • 南宁网站建设技术支持/5g站长工具seo综合查询