当前位置:网站首页>Leetcode 刷题日记 剑指 Offer II 047. 二叉树剪枝
Leetcode 刷题日记 剑指 Offer II 047. 二叉树剪枝
2022-07-28 05:26:00 【JETECHO】
原题链接(https://leetcode.cn/problems/pOCWxh/)
题目描述
给定一个二叉树 根节点 root ,树的每个节点的值要么是 0,要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。节点 node 的子树为 node 本身,以及所有 node 的后代。
示例1

示例2

示例3

数据限制
- 二叉树的节点个数的范围为[1,200]
- 二叉树节点的值只能是0或1
思路
对于叶子节点只要他是0的话那么这么节点就要删除毕竟叶子节点没有子节点,删除之后如果它没有兄弟节点那么他的父节点就是叶子节点,那么又要去判断它的值是否为0,如果为0那么就需要删除掉这个节点,如果它父节点又会重蹈覆辙则还需要继续删除。从这个流程不难看出,这题的关注点是叶子节点的删除以及父节点的更迭。所以可以采用递归的方法,从叶子节点开始处理,并且回溯的时候同步处理它的父节点。最后得到最终的处理完的二叉树。
如示例2的流程就应该是




代码
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;
}
边栏推荐
猜你喜欢
随机推荐
自定义组件--纯数据字段&组件的生命周期
Perl introductory learning (XI) file operation
Perl Introduction (10) formatted output
什么气传导蓝牙耳机好、配置比较高的气传导耳机推荐
Hugging face 的问题记录 I
动态规划--多步爬楼梯(爬楼梯进阶版)
刷题记录----二叉树的层序遍历
我的部署笔记
Pytorch learning notes 2 - about tensor
我的注解笔记
刷题记录----链表
【学习笔记】驱动
2022-07-17 Damon database installation
详解安装msdn 2015及其注意事项
MySQL delete tables without deleting databases
qt绘画事件-设置背景图片
Introduction to Perl (IX) quotation
结构体、位段、联合体(共用体)的大小如何计算
C语言的动态内存管理函数
C语言的编译和预处理









