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

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

目录

1、题目链接

2、题目

3、解法(后序遍历)

4、代码


1、题目链接

814.二叉树剪枝(LeetCode)

2、题目

3、解法(后序遍历)
 

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

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

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

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

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


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


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

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


函数的出口:

root == NULL

4、代码

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;
    }
};


http://www.kler.cn/a/382223.html

相关文章:

  • Zabbix6.0升级为7.2
  • 《计算机组成及汇编语言原理》阅读笔记:p48-p81
  • Day13 用Excel表体验梯度下降法
  • Android 蓝牙Bluedroid线程池设计思路介绍
  • NumPy 安装指南
  • Unity 3D饼状图效果
  • 【大数据】ETL ELT
  • 【MFC编程(三)】消息映射机制分析
  • 国内版Sketchfab平台 - CG美术之家(3D编辑发布篇)
  • 协同过滤——当前推荐技术和算法中使用最广泛和认可度最高的算法之一
  • 在Ubuntu24.04上用nginx启用文件索引服务:autoindex on; 笔记241102
  • 【AI日记】24.11.01 LangChain、openai api和github copilot
  • Naive UI 级联选择器 Cascader的:render-lable怎么使用(Vue3 + TS)(鼠标悬停该条数据的时候展示全部内容)
  • uni-app跨域set-cookie
  • 算法日记 18 day 二叉树
  • Mysql数据库的UDF提权
  • 小张求职记五
  • 【Qt】QVariant.toString().toStdString().data()
  • 引领汽车行业未来,3D数字化技术如何改变汽车行业?
  • springboot - 定时任务
  • FloodFill 算法 专题
  • 【Excel】区域单元格选择(一)
  • Java的Object类常用的方法(详述版本)
  • 钉钉向广告低头
  • Copy From 勇哥的机器视觉实验项目
  • 使用Jest进行JavaScript单元测试