小黑周末惊心动魄进“村”赶考,周一继续拖着疲惫的身体来实习的leetcode之旅:968. 监控二叉树

小黑看完题解思路后代码

# 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.result = 0
        # 定义递归函数
        def dfs(node):
            # 结点为空,当成已覆盖
            if not node:
                return 1
            # 后序遍历,判断孩子结点的顺序
            left = dfs(node.left)
            right = dfs(node.right)
            # 左右结点都被覆盖,则该结点不必覆盖
            if left == right == 1:
                return 0
            # 左右结点全是有相机的情况下,该结点被覆盖
            elif left == 2 and right == 2 :
                return 1
            # 其他情况,需要安装相机
            elif left == 0 or right == 0:
                self.result += 1
                return 2
            # 一个有相机 一个被覆盖,则这个被覆盖
            return 1
        root_status = dfs(root)
        # 如果root没有被覆盖,则安装相机
        if not root_status:
            self.result += 1
        return self.result

在这里插入图片描述

动态规划题解做法

# 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.result = 0
        # 定义递归函数
        def dfs(node):
            # 结点为空,当成已覆盖
            if not node:
                return 1
            # 后序遍历,判断孩子结点的顺序
            left = dfs(node.left)
            right = dfs(node.right)
            # 左右结点都被覆盖,则该结点不必覆盖
            if left == right == 1:
                return 0
            # 左右结点有一个未被覆盖,则安装相机
            elif left == 0 or right == 0:
                self.result += 1
                return 2
            # 其他情况均为被覆盖
            return 1
        root_status = dfs(root)
        # 如果root没有被覆盖,则安装相机
        if not root_status:
            self.result += 1
        return self.result

在这里插入图片描述

小黑生活

周五的晚饭与月光

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

小汤2第21课学习打卡

在这里插入图片描述

剪个头清醒清醒

在这里插入图片描述

最近太憋了,去医院看看,还好没啥事

在这里插入图片描述

麦当劳小憩在这里插入图片描述

在这里插入图片描述

下午开启赶考之旅

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

下午考完搓个澡 足个疗 拔个罐 汗个蒸放松放松

请添加图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

回家路上再垫吧垫吧

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

第二天继续赶考,上午最后5分钟冲进考场

在这里插入图片描述
在这里插入图片描述

两个小时行测后,火速吃饭,来个达美乐

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

提前火速骑行2km赶往喜茶店,准备校招笔试在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

最后十分钟,连闯红灯,最后一分钟火速到达考场

在这里插入图片描述
在这里插入图片描述

连续3个小时申论的挣扎,让小黑知道了什么叫认真的重在参与,从小到大从来没一口气写那么多字

在这里插入图片描述

尝试一下坐公交回家,却遭遇多起交通事故的堵车

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

终于到达北京西站,坐地铁回家

在这里插入图片描述
在这里插入图片描述

饭后红酒牛排吹起来

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新书包到啦

在这里插入图片描述
在这里插入图片描述

开启早高峰干饭之旅

在这里插入图片描述
在这里插入图片描述
###

把按摩仪退了

在这里插入图片描述

午餐 刷题 面试 下午怒干双人餐

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值