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

C++二叉树剪枝

文章目录

  • C++二叉树剪枝
  • 题目链接
  • 题目描述
  • 解题思路
  • 代码
  • 复杂度分析

C++二叉树剪枝

题目链接

LCR 047. 二叉树剪枝 - 力扣(LeetCode)

题目描述

给定一个二叉树 根节点 root ,树的每个节点的值要么是 0,要么是 1。请剪除该二叉树中所有节点的值为 0 的子树。

节点 node 的子树为 node 本身,以及所有 node 的后代。

解题思路

首先我们分为三步

①函数头

首先我们应该想到我们去递归解答这道题目,函数的参数非常好确认就是TreeNode* root即可。

函数的返回值:根据题目的意思我们要将那些全零的子树全部在树中删除,那么我们最好是返回一个TreeNode*即可。

②函数体

我们要实现的肯定是一个深度优先遍历dfs,那么

(1)dfs(root->left);

(2)dfs(root->right);

(3) 处理当前root

③截止条件

当我们深度历到root == nullptr为空的时候

代码

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)root = nullptr;return root;}
}

复杂度分析

时间复杂度:

dfs时间复杂度为O(N);

空间复杂度:

未使用额外的空间,空间复杂度为:O(1);

http://www.lryc.cn/news/212088.html

相关文章:

  • ZooKeeper中节点的操作命令(查看、创建、删除节点)
  • el-table多选表格 实现默认选中 删除选中列表取消勾选等联动效果
  • 预安装win11的电脑怎么退回正版win10?
  • MATLAB——多层小波的重构
  • 解锁高效创作艺术!AI助力文章生成与精美插图搭配完美融合
  • ✔ ★【备战实习(面经+项目+算法)】 10.29学习
  • 微服务-Ribbon负载均衡
  • UC3845BD1R2G一款专门针对离线和 DC-DC 转换器应用 高性能电流模式PWM控制器
  • vivo自研AI大模型即将问世,智能手机行业加速迈向AI时代
  • 探索JavaScript事件流:DOM中的神奇旅程
  • 听GPT 讲Rust源代码--library/std(8)
  • Hbase基本使用,读写原理,性能优化学习
  • 添加主仓库后报错error: remote upstream already exists.
  • 香港服务器如何做负载均衡?
  • 前端 :用HTML , CSS ,JS 做一个秒表
  • BIOS MBR UEFI GPT详解
  • 2023NOIP A层联测20-点餐
  • 3D LUT 滤镜 shader 源码分析
  • 五分钟理解Java跨平台原理(适合小白)
  • 从初级测试工程师到测试专家,你的晋升路线是什么?
  • 合肥中科深谷嵌入式项目实战——人工智能与机械臂(四)
  • Zynq-Linux移植学习笔记之64- 国产ZYNQ在linux下配置国产5396芯片
  • 系统架构设计师-第19章-大数据架构设计理论与实践-软考学习笔记
  • 论坛搭建.
  • 三种前端埋点方式
  • html获取网络数据,列表展示 第二种
  • 【Python 算法】信号处理通过陷波滤波器准确去除工频干扰
  • Redis(08)| 线程模型
  • Java14-16新特性
  • 中兴再推爆款,双2.5G网口的巡天AX3000Pro+仅需299元