给定一个二叉树,我们在树的节点上安装摄像头。
节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。
计算监控树的所有节点所需的最小摄像头数量。
题解
参考自代码随想录
class Solution {public int result=0;public int minCameraCover(TreeNode root) {if (dfs(root) == 0) { // root 无覆盖result++;}return result;}public int dfs(TreeNode root){//边界条件// 空节点,该节点有覆盖if (root == null) return 2;int left=dfs(root.left);int right=dfs(root.right);//左右子节点有一个没有覆盖,本节点需要装监控if(left==0||right==0){result++;return 1;}//左右子节点有一个有监控,本节点被覆盖if(left==1||right==1) return 2;else return 0;}
}