package 数据结构和算法;
//输入:[0,0,null,0,null,0,null,null,0]
//输出:2
//解释:需要至少两个摄像头来监视树的所有节点。
public class t24_贪心算法_监控二叉树 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
TreeNode a= new TreeNode(0);
TreeNode b= new TreeNode(0);
TreeNode c= new TreeNode(0);
TreeNode d= new TreeNode(0);
TreeNode e= new TreeNode(0);
TreeNode f= new TreeNode(0);
TreeNode g= new TreeNode(0);
TreeNode h= new TreeNode(0);
TreeNode i= new TreeNode(0);
a.setLeft(b);
// a.setRight(c);
b.setLeft(d);
// b.setRight(e);
d.setLeft(f);
// d.setRight(g);
// f.setLeft(h);
f.setRight(i);
int res2 = minCameraCover(a);
System.out.print(res2);
}
static int res=0;
public static int minCameraCover(TreeNode root) {
if(minCame(root) ==0) {
res++;
}
return res;
}
private static int minCame(TreeNode root) {
// TODO 自动生成的方法存根
if(root ==null) {
return 2;
}
int left = minCame(root.left);
int right = minCame(root.right);
if(left==2 && right==2) {
return 0;
}else if(left ==0 || right==0) {
res++;
return 1;
}else {
return 2;
}
}
}