一、题目
)
二、代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
//核心方法:从底层向最高层遍历 后序遍历 左右中
//状态0 无覆盖 状态1 有摄像头 状态2 有覆盖
class Solution
{
public:
int return_int=0;
int recursion(TreeNode* process_node)
{
if(process_node==nullptr) return 2;
int left=0;
int right=0;
left=recursion(process_node->left);
right=recursion(process_node->right);
if(left==2&&right==2) return 0;
else if(left==0||right==0)
{
return_int++;
return 1;
}
else return 2;
return -1;
}
int minCameraCover(TreeNode* root)
{
int return_num=1;
return_num=recursion(root);
if(return_num==0) return_int++;
return return_int;
}
};