力扣-贪心-968 监控二叉树

思路

用true和false作为放置了摄像头,会有局限,就是没法判断以下情况

所以要用数字代表三种状态

  • 2:有覆盖
  • 1:有摄像头
  • 0:无覆盖

两个节点都被覆盖时,要返回0

两个节点有一个无覆盖就要返回1

两个节点有一个有摄像头,返回覆盖即可

代码

cpp 复制代码
class Solution {
public:
    int res = 0;
    int mindTracing(TreeNode* root){
        if(root == nullptr) return 2;
        int left = mindTracing(root->left);
        int right = mindTracing(root->right);

        if(left == 2 && right == 2){
           return 0;
        }
        if(left == 0 || right == 0){
            res++;
            return 1;
        }
        if(left == 1 || right == 1){
            return 2;
        }
        return -1;
    }
    int minCameraCover(TreeNode* root) {
        if(root->right == nullptr && root->left == nullptr) return 1;
        if(mindTracing(root) == 0){
            res++;
        }
        return res;
    }   
};
相关推荐
顾人间讥诘3 分钟前
卡特兰数及相关应用场景
算法
天骄t3 分钟前
深入解析栈:数据结构与系统栈
java·开发语言·数据结构
CoderYanger5 分钟前
A.每日一题——3625. 统计梯形的数目 II
java·算法·leetcode·职场和发展
松涛和鸣7 分钟前
24、数据结构核心:队列与栈的原理、实现与应用
c语言·开发语言·数据结构·学习·算法
豐儀麟阁贵11 分钟前
9.1String类
java·开发语言·算法
三炭先生16 分钟前
计算机视觉算法--第一章:概述
人工智能·算法·计算机视觉
唯道行19 分钟前
计算机图形学·21 梁友栋-Barsky直线裁剪算法与三维直线裁剪
人工智能·算法·机器学习·计算机视觉·计算机图形学·opengl
魂梦翩跹如雨21 分钟前
Java BigDecimal与RoundingMode的用法总结
java·算法
little~钰23 分钟前
线段树和扫描线结合
数据结构·算法
dragoooon3428 分钟前
[优选算法专题十.哈希表 ——NO.58~59存在重复元素 II、字母异位词分组]
数据结构·散列表