英文原题
Given a binary tree, we install cameras on the nodes of the tree.
Each camera at a node can monitor its parent, itself, and its immediate children.
Calculate the minimum number of cameras needed to monitor all nodes of the tree.
分析
题目大致意思是给树装监控,一个监控可以覆盖自己以及它的父节点和子节点,求最少需要多少个监控。 首先分析每个节点会被如何覆盖:
- 第一种,根节点,左右子节点里有监控。
- 第二种,中间节点,父节点或左右子节点有监控。
- 第三种,子节点,父节点有监控。
- 最后是本身就是监控。 肯定是要用DFS遍历来模拟安装监控的,但是这题我们得从下往上安装。设定三个状态0:未被覆盖;1:被覆盖;2:本身是监控。那么对于每个节点来说,如果是叶子节点,那就不用安装;对于其他节点来说,则根据其子节点的覆盖情况来安装。这么做就不需要把父节点考虑进来,方便很多。
python 代码
1 | class Solution: |
前两天打了疫苗有点发烧就没更新,今天继续。