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

[LeetCode] 814. 二叉树剪枝

题目描述:

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

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

节点 node 的子树为 node 本身加上所有 node 的后代。

示例 1:

输入:root = [1,null,0,0,1]
输出:[1,null,0,null,1]
解释:
只有红色节点满足条件“所有不包含 1 的子树”。 右图为返回的答案。

示例 2:

输入:root = [1,0,1,0,0,0,1]
输出:[1,null,1,null,1]

示例 3:

输入:root = [1,1,0,1,1,0,1,0]
输出:[1,1,0,1,1,null,1]

提示:

  • 树中节点的数目在范围 [1, 200] 内
  • Node.val 为 0 或 1

题目链接:

. - 力扣(LeetCode)

解题主要思路:

典型的决策树,采用后序深度优先遍历即可,先遍历左子树,再遍历右子树,返回nullptr的条件只有:要么节点原本就是nullptr;要么左右节点都是nullptr且val==0。

解题代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* pruneTree(TreeNode* root) {return dfs(root);}TreeNode* dfs(TreeNode* root){if (root == nullptr) return nullptr;// dfs后序遍历,返回nullptr的条件只有://    要么节点原本就是nullptr//    要么左右节点都是nullptr且val==0 root->left = dfs(root->left);root->right = dfs(root->right);if (root->val == 0 && root->left == nullptr && root->right == nullptr) return nullptr;return root;}
};


http://www.mrgr.cn/news/56394.html

相关文章:

  • javascript对象介绍
  • Qt学习笔记第21到30讲
  • 【Linux】 Linux 释放内存脚本
  • HDU RSA
  • Redis2
  • 【java数据结构】队列
  • github加速 DevSidecar 1.8.8
  • 免费送源码:Java+ssm+MySQL SSM二手物品管理系统 计算机毕业设计原创定制
  • AutoSar AP CM实例说明符的使用方法总结
  • 开头的例子的理解
  • 【系统规划与管理师】历年各章节分值汇总(论文)
  • C++ 进阶:类相关特性的深入探讨
  • 伺服增量式和绝对式的本质区别?
  • 基因检测4 - 多囊肾
  • flask服务通过gunicorn启动,supervised管理服务
  • 基于Java+ssm的名著阅读网站
  • HTTP 请求中的Content-Type
  • ECHO-GL:盈利电话驱动的异质图学习股票 走势预测
  • HTB:Headless[WriteUP]
  • 数据库实时备份软件
  • 【Linux】为什么环境变量具有全局性?共享?写时拷贝优化?
  • app端文章列表查询-详细教程(上)
  • 下载MySQL-Windows
  • 矩阵概念 和 性质
  • 无源数据TRP,TIS指标好还是有源数据指标好
  • CentOS 7 安装gcc编译环境