【专题二 二叉树中的深搜】814. 二叉树剪枝

1.题目解析

2.讲解算法原理

通过决策树,抽象出递归的三个核心问题

这个问题要减去该节点,必须左子树全为0,右子树全为0,再判断该节点,则相当于一个后序遍历

对于一个节点,如果他本身就是空节点,那么直接返回空,否则对于其左子树和右子树进行判断,如果左子树为空,右子树为空,且该节点值为0,那么把该节点置为null,返回该节点

3.编写代码

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode pruneTree(TreeNode root) {
        if(root==null){
            return null;
        }
        root.left=pruneTree(root.left);
        root.right=pruneTree(root.right);
        if(root.left==null&&root.right==null&&root.val==0){
            root=null;
        }
        return root;
    }
}
相关推荐
前端摸鱼匠几秒前
【AI大模型春招面试题11】什么是模型的“涌现能力”(Emergent Ability)?出现条件是什么?
人工智能·算法·ai·自然语言处理·面试·职场和发展
MORE_7717 分钟前
leecode-合并区间-贪心算法
算法·贪心算法
2401_8732046530 分钟前
分布式系统安全通信
开发语言·c++·算法
sw1213892 小时前
C++中的代理模式实战
开发语言·c++·算法
ballball~~2 小时前
ISP-CCM(Color Correction Matrix)
图像处理·数码相机·算法
Sunshine for you3 小时前
实时操作系统中的C++
开发语言·c++·算法
中科院提名者3 小时前
BPE 算法的硬核拆解——理解词表(Vocabulary)是如何从零训练出来的,以及字符串是如何被切碎的
算法
「QT(C++)开发工程师」3 小时前
C++11三大核心特性深度解析:类型特征、时间库与原子操作
java·c++·算法
乐分启航3 小时前
SliMamba:十余K参数量刷新SOTA!高光谱分类的“降维打击“来了
java·人工智能·深度学习·算法·机器学习·分类·数据挖掘
你真是饿了5 小时前
算法专题二:滑动窗口
算法