求职刷题力扣DAY34--贪心算法part05

Definition for a binary tree node.

class TreeNode:

def init(self, val=0, left=None, right=None):

self.val = val

self.left = left

self.right = right

class Solution:

def minCameraCover(self, root: Optional[TreeNode]) -> int:

三种状态0:没有覆盖,1:已覆盖 2:安装摄像头

self.res = 0

def recur(root):

if not root:

#空节点,已覆盖,这样叶子节点不用单独判断了

return 1

假如左右只有要没有覆盖,则需要安装摄像头

left = recur(root.left)

right = recur(root.right)

if left == 0 or right == 0:

self.res += 1

return 2

假如左右有一个有摄像头,当前为已覆盖

if left == 2 or right == 2:

return 1

其他情况表示未覆盖

return 0

#最后还要对根节点进行单独的判断,如果root没有覆盖需要 + 1

if recur(root) == 0:

self.res += 1

return self.res

相关推荐
健康胡21 分钟前
仿射变换 与 透视变换
图像处理·人工智能·深度学习·opencv·算法·机器学习·计算机视觉
L_cl23 分钟前
【Python 算法零基础 2.模拟 ④ 基于矩阵】
python·算法·矩阵
2301_8076114926 分钟前
310. 最小高度树
c++·算法·leetcode·深度优先·回溯
@ chen39 分钟前
常见排序算法及其java实现
java·算法·排序算法
学习中的码虫2 小时前
数据结构中的高级排序算法
数据结构·算法·排序算法
山北雨夜漫步2 小时前
机器学习 Day17 朴素贝叶斯算法-----概率论知识
人工智能·算法·机器学习
是店小二呀2 小时前
【优选算法 | 字符串】字符串模拟题精选:思维+实现解析
android·c++·算法
成工小白2 小时前
【Linux】进程地址空间
linux·算法
凤年徐2 小时前
【C/C++】自定义类型:结构体
c语言·开发语言·c++·经验分享·笔记·算法
Inverse1623 小时前
C语言_自定义类型:结构体
c语言·开发语言·算法