题目
给定一个二叉树,我们在树的节点上安装摄像头。
节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。
计算监控树的所有节点所需的最小摄像头数量。
示例 1:
输入:[0,0,null,0,0]
输出:1
解释:如图所示,一台摄像头足以监控所有节点。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-bst-to-greater-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解及思路
源码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
private int total = 0;
public int minCameraCover(TreeNode root) {
if(root==null)
return total;
if(dfs(root)==2)
total++;
return total;
}
public int dfs(TreeNode node){
if(node==null)
return 1;
int left = dfs(node.left);
int right = dfs(node.right);
if(left==2||right==2){
total++;
return 0;
}else if(left==0||right==0){
return 1;
}else{
return 2;
}
}
}