给定一个二叉树,我们在树的节点上安装摄像头。
节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。
计算监控树的所有节点所需的最小摄像头数量。
int ans=0;
int minCameraCover(TreeNode* root) {
if(dfs(root)==0)
ans++;
return ans;
}
//0:该节点无覆盖
//1:本节点有摄像头
//2:本节点有覆盖
int dfs(TreeNode *root){
if(root==nullptr){
return 2;
}
int left=dfs(root->left);
int right=dfs(root->right);
if(left==2&&right==2){
return 0;
}
if(left==0||right==0){
ans++;
return 1;
}
if(left==1||right==1){
return 2;
}
return 0;
}