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

【递归搜索回溯专栏】专题二:二叉树中的深搜----二叉树剪枝

本专栏内容为:递归,搜索与回溯算法专栏。 通过本专栏的深入学习,你可以了解并掌握算法。

💓博主csdn个人主页:小小unicorn
⏩专栏分类:递归搜索回溯专栏
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识

专题二

  • 题目来源
  • 题目描述
  • 题目解析
  • 算法原理
  • 代码实现

题目来源

本题来源为:

Leetcode 814. 二叉树剪枝

题目描述

给你二叉树的根结点 root ,此外树的每个结点的值要么是 0 ,要么是 1 。

返回移除了所有不包含 1 的子树的原二叉树。

节点 node 的子树为 node 本身加上所有 node 的后代。
在这里插入图片描述
在这里插入图片描述

题目解析

把题目给的示例分析一下:
在这里插入图片描述
题目说返回移除了所有不包含 1 的子树的原二叉树。换句话是就是将二叉树中全是0的子树删除掉。

算法原理

对于碰到特别抽象的问题时,也就是说子问题很难发现时,我们可以通过决策树,抽象出递归的三个核心问题。

对于本题的子问题也还是很好想的,就是传一个根,将这个全部包含0的节点干掉,然后返回新的头指针。

以绿色这一层为例:要想将这一层剪枝,必须得让这个节点的左子树和右子树都为0时才能剪枝。那么肯定是后序遍历。

在这里插入图片描述
先看左下角这个节点,他的左右节点都为空,那么这个我们就可以把它干掉。那干掉了这个节点返回1节点时,1节点的左节点是不是要置空,那么怎么让他回去的时候将节点指向空呢?加一个返回值即可。当返回的时候把null给他。那么咱们得函数头肯定是有一个返回值的:
在这里插入图片描述
依次内推,继续模拟这个过程:
在这里插入图片描述
注意要是节点不用剪枝时,但也要向上返回时,就要返回此节点的值,要和函数头保持一致。

那么我们的函数体和出口已经出来了:
在这里插入图片描述

代码实现

如果笔试的话,可以不用delete,但是要是面试,可以问一下面试官节点是不是一个一个new出来的,要是New出来的很可能就会报错。

class Solution 
{
public:TreeNode* pruneTree(TreeNode* root) {if(root==nullptr)return nullptr;root->left=pruneTree(root->left);root->right=pruneTree(root->right);if(root->left==nullptr&&root->right==nullptr&&root->val==0){delete root;//防止内存泄漏root=nullptr;}return root;}
};
http://www.lryc.cn/news/319784.html

相关文章:

  • Django实现登录注册
  • Python实战:NumPy数组与矩阵操作入门
  • 2024.2.26校招 实习 内推 面经
  • cannot find -xml2: No such file or directory的解决方法
  • linux下的进程间通信
  • 基于单片机的IC 卡门禁系统设计
  • 【爬虫介绍】了解爬虫的魅力
  • Xcode 15.3 Archive失败
  • Hadoop学习3:问题解决
  • HarmonyOS鸿蒙开发常用4种布局详细说明
  • Python中的变量是什么类型?
  • 数据结构之顺序表(C语言版)
  • Java学习笔记(15)
  • js中怎样添加、移出、插入、复制、创建?
  • 浅谈C/C++的常量const、指针和引用问题
  • React三大属性---state,props,ref
  • 进程学习--02
  • 简易版 RPC 框架实现 1.0 -http实现
  • 欧科云链做客Google Cloud与WhalerDAO专题论坛,畅谈Web3数据机遇
  • 计算机网络 TCP协议的流量控制
  • 【基于HTML5的网页设计及应用】——改变文字和背景颜色
  • 面向对象编程第三式: 多态 (Java篇)
  • [数据集][目标检测]草莓成熟度检测数据集VOC+YOLO格式412张3类别
  • 浅谈HTTP 和 HTTPS (中间人问题)
  • JAVA八股文面经问题整理第3弹
  • python 爬取人民新闻
  • 蓝桥杯刷题(九)
  • 【NTN 卫星通信】 车辆物联网设备通过NTN和TN切换的应用场景
  • html5cssjs代码 014 布局框架
  • [EFI]Lenovo Ideapad 530S-14IKB电脑 Hackintosh 黑苹果efi引导文件