• a_lc_监控二叉树(后序遍历+状态返回)


    思路
    用0、1、2分别记录三种状态:

    • 0:子结点尚未被监控
    • 1:子节点被监控了
    • 2:根节点被监控

    根节点为空时,自然不需要监控,那这种情况下默认根结点被监控;子节点之一没有被监控,则在当前结点安装监控;

    class Solution {
    public:
        int ans;
        int dfs(TreeNode* root) {
            if (root==NULL) return 2; 
            int l=dfs(root->left), r=dfs(root->right);
            if (l==0 || r==0) { //子节点之一没有监控,则需在此处安装摄像
                ans++;
                return 1;   //在当前结点安装了监控,那对于它的直接父节点来说就是子节点有监控
            } else if (l==1 || r==1) { //子节点之一有监控,则当前父节点一定有监控
                return 2;
            } else {        //l=r=2是子节点的状态,表示当前结点的子节点可被它的子节点监控,也就是说当前结点没被监控到
                return 0;
            }
        }
        int minCameraCover(TreeNode* root) {
            return dfs(root)==0?ans+1:ans;
        }
    };
    
  • 相关阅读:
    域账户-配置文件
    创建任务计划
    查看系统和PowerShell版本
    查找数组中元素的索引位置
    更改计算机名称,修改密码
    生成GUID
    微服务架构 vs. SOA架构
    springMvc架构简介
    Spring Boot和Spring cloud
    Spring链接汇总
  • 原文地址:https://www.cnblogs.com/wdt1/p/13715153.html
Copyright © 2020-2023  润新知