class Solution {
private final Integer UNCOVERED
= 0, COVERED
= 2, HASCAM
= 1;
private Integer result
= 0;
public int minCameraCover(TreeNode root
) {
if (UNCOVERED
== traversal(root
)) {
result
++;
}
return result
;
}
private int traversal(TreeNode cur
) {
if (cur
== null
) return COVERED
;
int left
= traversal(cur
.left
);
int right
= traversal(cur
.right
);
if (left
== COVERED
&& right
== COVERED
)
return 0;
if (left
== 0 || right
== 0) {
result
++;
return HASCAM
;
}
if (left
== 1 || right
== 1) {
return COVERED
;
}
return -1;
}
}
简化版本:
class Solution {
int res
= 0;
public int minCameraCover(TreeNode root
) {
if (traversal(root
) == 0) {
res
++;
}
return res
;
}
private int traversal(TreeNode node
) {
if (node
== null
) return 2;
int left
= traversal(node
.left
);
int right
= traversal(node
.right
);
if (left
== 2 && right
== 2) {
return 0;
} else if (left
== 0 || right
== 0) {
res
++;
return 1;
} else {
return 2;
}
}
}
转载请注明原文地址: https://lol.8miu.com/read-15568.html