一:论语
这个有意思,我们可以从中得出的是,一个人过错 其实是潜意思决定的 行为见品质 但知错更改也是nice的
二:题目
三:上码
/*** 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) {}* };*/
class Solution {
public:int cnt = 0;int tralTree(TreeNode* root) {if(root == nullptr) return 2;//遍历到叶节点的话有覆盖int left = tralTree(root->left);int right = tralTree(root->right);//情况一 左右结点都被覆盖了 那么其就是未被覆盖if(left == 2 && right == 2) return 0;//情况二://left == 0 && right == 0 左右结点无覆盖//left == 1 && right == 0 左节点有摄像头,右结点无覆盖//left == 0 && right == 1 左节点无覆盖,右结点有摄像头//left == 0 && right == 2 左节点无覆盖,右结点有覆盖//left == 2 && right == 0 左节点有覆盖,右结点无覆盖if(left == 0 || right == 0) {cnt++;return 1;}//情况三://left == 1 && right == 2左节点有摄像头,右节点有覆盖//left == 2 && right == 1左节点有覆盖,右节点有摄像头//left == 1 && right == 1 都有摄像头的话,那我们就可以返回被覆盖if(left == 1 || right == 1) return 2;return -1;}int minCameraCover(TreeNode* root) {/**思路:1.0表示未覆盖,1表示有摄像头,2表示覆盖了2.这里我们采用的遍历方法是后序遍历,因为我们是从低往上的,我们不考虑叶节点,因为叶节点没有子结点所以我们都是再叶节点的父节点上安装摄像头*/int num = tralTree(root);if(num == 0){cnt++;}return cnt;}
};
家人们 家人们 贪心稀里糊涂的结束了 引用卡哥的话,贪心就是 你不知道咋回事就用上了 嘿嘿 反正是不知道咋回事就结束贪心了 我要拥抱动态规划了
加油 晚安
菜鸡杰要天天向上 !!!!!!!!!!