【算法】递归+深搜:814.二叉树剪枝

目录

1、题目链接

2、题目

3、解法(后序遍历)

4、代码


1、题目链接

814.二叉树剪枝(LeetCode)

2、题目

3、解法(后序遍历)

我们这次不使用宏观的观察法,而是从具体实现开始。

题目要求我们,去掉不含1的子树。

对于子树这个概念,如何判断是否不含1?

我们就需要先判断他的左右子树,然后再判断根节点。

也就是,我们需要自顶向上的遍历,因此,我们使用后序遍历,按照左子树、右子树、根节点的顺序。

剪枝操作的实施:把结点置空

遇到叶子节点,且val = 0,采取剪枝。

非叶子结点,直接返回对应的root.

函数的出口:

root == NULL

4、代码

cpp 复制代码
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;
    }
};
相关推荐
stsdddd3 小时前
【YOLO算法包裹背包行李箱塑料袋包装纸盒快递盒带目标检测数据集】
算法·yolo·目标检测
洛水水3 小时前
【力扣100题】52.最小路径和
算法·leetcode
快手技术3 小时前
将DSA注意力引入多模态,快手Keye2.0开启强化推理新范式
算法
码之气三段.3 小时前
牛客周赛 Round 145-E(写了200行的史山)
算法·深度优先
Hwang2523 小时前
Attention-04-decoder部分
算法
计算机安禾4 小时前
【算法分析与设计】第13篇:最小生成树:Prim算法与Kruskal算法的比较研究
大数据·人工智能·算法
vortex54 小时前
国密(商用密码)算法核心参数速查
算法·密码学
wuweijianlove5 小时前
算法中的记忆化思想与重复子问题优化的技术5
算法
小江的记录本5 小时前
【JVM虚拟机】垃圾回收GC:垃圾判定算法:引用计数法、可达性分析算法(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·spring·面试
Hello.Reader5 小时前
算法基础(十四)—— 随机化快速排序为什么平均表现很好
算法