Leetcode 968-监控二叉树
给定一个二叉树,我们在树的节点上安装摄像头。
节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。
计算监控树的所有节点所需的最小摄像头数量。
题解
参考自代码随想录
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;
}
}