File tree Expand file tree Collapse file tree 1 file changed +36
-1
lines changed Expand file tree Collapse file tree 1 file changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -369,8 +369,44 @@ class Solution {
369369}
370370```
371371
372+ 简化分支版本:
373+
374+ ``` java
375+ class Solution {
376+ static int ans;
377+ public int minCameraCover (TreeNode root ) {
378+ ans = 0 ; // 初始化
379+ if (f(root) == 0 ) ans ++ ;
380+ return ans;
381+ }
382+ // 定义 f 函数有三种返回值情况
383+ // 0:表示 x 节点没有被相机监控,只能依靠父节点放相机
384+ // 1:表示 x 节点被相机监控,但相机不是放在自身节点上
385+ // 2:表示 x 节点被相机监控,但相机放在自身节点上
386+ public static int f (TreeNode x ) {
387+ if (x == null ) return 1 ; // 空树认为被监控,但没有相机
388+ // 左右递归到最深处
389+ int l = f(x. left);
390+ int r = f(x. right);
391+ // 有任意一个子节点为空,就需要当前节点放相机,不然以后没机会
392+ if (l == 0 || r == 0 ) {
393+ ans ++ ; // 放相机
394+ return 2 ;
395+ }
396+ // 贪心策略,左右子树都被监控,且没有监控到当前节点,
397+ // 那么最有利的情况就是将相机放置在当前节点父节点上,
398+ // 因为这样能多监控可能的子树节点和父父节点
399+ if (l == 1 && r == 1 ) return 0 ;
400+ // 剩下情况就是左右子树有可能为 2,即当前节点被监控
401+ return 1 ;
402+ }
403+ }
404+ ```
405+
406+
372407
373408### Python
409+
374410贪心(版本一)
375411``` python
376412class Solution :
@@ -757,4 +793,3 @@ public class Solution
757793<a href =" https://programmercarl.com/other/kstar.html " target =" _blank " >
758794 <img src =" ../pics/网站星球宣传海报.jpg " width =" 1000 " />
759795</a >
760-
You can’t perform that action at this time.
0 commit comments