尽量让叶子节点的父节点变成摄像头
叶子节点固定为有覆盖的值2
左右孩子有一个没有覆盖-》父节点放摄像相机
左右节点有覆盖,父节点就应该是2
头节点单独判断
2覆盖
0是啥都不做
1是摄像头
1.如果是叶子节点,直接返回2
3.左右节点有一个为空,return 1
2.左右节点有一个是摄像,另一个是摄像或者覆盖,return 2
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
尽量让叶子节点的父节点变成摄像头
叶子节点固定为有覆盖的值2
左右孩子有一个没有覆盖-》父节点放摄像相机
左右节点有覆盖,父节点就应该是2
头节点单独判断
2覆盖
0是啥都不做
1是摄像头
1.如果是叶子节点,直接返回2
3.左右节点有一个为空,return 1
2.左右节点有一个是摄像,另一个是摄像或者覆盖,return 2
*/
class Solution {
private int result = 0;
public int minCameraCover(TreeNode root) {
if(root ==null){
return result;
}
if(traval(root) == 0){
result++;
}
return result
}
private int traval(TreeNode cur){
if(cur == null) return 2;
int left = traval(cur.left);
int right = traval(cur.right);
//左右节点都有覆盖
if(left == 2 && right ==2){
return 0;
}
// 左右节点有一个无覆盖
if(left==0||right==0){
result++;
return 1;
}
// 左右节点有一个是摄像,有一个是覆盖
/*
left right
1 2
2 1
1 1
有一个是摄像头,另一个可能是摄像头,也可能是覆盖
*/
if(left==1||right ==1){
return 2;
}
return -1;
}
}
738. 单调递增的数字
数字从倒数第二位遍历
class Solution {
public int monotoneIncreasingDigits(int n) {
String num = String.valueOf(n);
int start = num.length();
char[] chars = num.toCharArray();
for(int i = num.length()-2;i>=0;i--){
if(chars[i]>chars[i+1]){
chars[i]--;
//从下一个开始
start = i+1;
}
}
for(int i =start;i<num.length();i++){
chars[i] ='9';
}
return Integer.parseInt(String.valueOf(chars));
}
}