968. 监控二叉树

   日期:2020-09-23     浏览:90    评论:0    
核心提示:968. 监控二叉树题解​ 关于树的问题我们一般使用递归来解决。首先可以遍历到树的最底端(此节点的左右孩子都为空,空孩子标记为状态1),标记此节点为已覆盖(状态0),如果一个节点的其中一个左右节点状态为已覆盖(即还未安装监视器),那么给此节点安装监视器,并且记录监视器数量的全局变量自增。​ 安装监视器后,给节点标记状态为2,那么它的父节点就会被此监视器监控,即父节点已被覆盖,状态为1。/** * Definition for a binary tree node. * public class

968. 监控二叉树

题解

​ 关于树的问题我们一般使用递归来解决。首先可以遍历到树的最底端(此节点的左右孩子都为空,空孩子标记为状态1),标记此节点为已覆盖(状态0),如果一个节点的其中一个左右节点状态为已覆盖(即还未安装监视器),那么给此节点安装监视器,并且记录监视器数量的全局变量自增。

​ 安装监视器后,给节点标记状态为2,那么它的父节点就会被此监视器监控,即父节点已被覆盖,状态为1。


class Solution { 
    public int minCameraCover(TreeNode root) { 
        if (lrd(root) == 0) { 
            res++;
        }
        return res;
    }

    int res=0;
    int lrd(TreeNode node) { 

        if (node == null) { 
            return 1;
        }
        int left=lrd(node.left);
        int right=lrd(node.right);
        if (left == 0 || right == 0) { 
            res++;
            return 2;
        }
        if(left==1&&right==1){ 
            return 0;
        }
        if(left+right>=3){ 
            return 1;
        }

        return -1;
    }
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服