class Solution {
public:
int minCameraCover(TreeNode* root) {
int ans = 0;
backtracking(root, ans);
if (root->left == NULL && root->right == NULL)
return 1;
if ((root->left == NULL || root->left->val == 2) && (root->right == NULL || root->right->val == 2)) {
ans++;
}
return ans;
}
void backtracking(TreeNode* root, int& ans) {
if (root != NULL) {
backtracking(root->left, ans);
backtracking(root->right, ans);
if ((root->left != NULL && root->left->val == 1) || (root->right != NULL && root->right->val == 1))
root->val = 2;
if ((root->left != NULL && root->left->val == -1) ||(root->right != NULL && root->right->val == -1)) {
ans++;
root->val = 1;
}
if (root->left == NULL && root->right == NULL)
root->val = -1;
else if ((root->left == NULL || root->left->val == 2) && (root->right == NULL || root->right->val == 2)) {
root->val = -1;
}
}
}
};
968. 监控二叉树(需复习,代码冗长)
最新推荐文章于 2024-07-09 22:37:42 发布