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

968. Binary Tree Cameras

目录

题目描述

贪心


题目描述

968. Binary Tree Cameras

贪心

要从下往上处理,所以框架是后序遍历。

/*** 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 {int cnt_ = 0;//给每一个结点定义3个状态enum Status{COVERED = 1,//已被监控覆盖到UN_COVERED = 2,//还没有被监控覆盖到PLACED_CAMERA = 3//该位置放置有相机};
public:int minCameraCover(TreeNode* root) {if(monitor(root) == UN_COVERED)cnt_++;return cnt_++;}//返回root的状态Status monitor(TreeNode* root){if(root == nullptr){//叶子结点的孩子不存在,它们的状态应该设置为已覆盖,设置为其他两种状态都不行return COVERED;}auto L = monitor(root->left);auto R = monitor(root->right);if(L==UN_COVERED || R == UN_COVERED){cnt_++;return PLACED_CAMERA;}//上下两个判断的顺序不能颠倒if(L== PLACED_CAMERA || R == PLACED_CAMERA){return COVERED;}return UN_COVERED;}
};

如果不判断整个树的根节点是否被覆盖,则无法通过下面这种情形。

 如果颠倒了两个判断的先后顺序,则无法通过下面这种情形:

相关文章:

  • 概率论几大分布的由来
  • EMS企业微电网能效管理 + IBMS智能化集成系统:双擎驱动企业绿色低碳转型
  • 在GIS 工作流中实现数据处理(3)
  • 汇编语言深度指南:从基础到字符串操作
  • linux日志工具Rsyslog
  • 基于鹅优化算法(GOOSE)和三次样条插值的机器人路径规划MATLAB完整实现方案
  • STL难记忆却常用的用法集合(持续更新中)
  • 【测试开发】函数进阶-纯函数
  • 欧盟RED网络安全标准EN 18031-2的要求
  • ES集群的分布式存储
  • YOLOv1 技术详解:NMS(非极大值抑制)的工作原理与实现细节
  • Python+TensorFlow:30分钟快速入门AI开发
  • LaViDa:基于扩散模型的多模态大模型,速度超越next-token范式
  • 魔百和网络机顶盒CM211-1硬件解析
  • linux驱动开发(6)-内核虚拟空间管理
  • IGBT开通时间、关断时间、死区时间
  • java复习 09
  • UE5场景漫游——鼠标控制旋转与第一人称漫游
  • 5.4.1树的存储结构
  • 获取Unity节点路径
  • 做网站上传空间什么意思/关键词推广软件
  • 焦作会计做继续教育在哪个网站/软件外包公司
  • 广东网站建设公司哪家便宜/网上推广app怎么做
  • 汉中公司做网站/it行业培训机构一般多少钱
  • 台州网站建设咨询薇/网络营销有什么
  • 网站开发任务书模板/crm系统成功案例分享ppt