968. 监控二叉树(hard)

给定一个二叉树,我们在树的节点上安装摄像头。
节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。
计算监控树的所有节点所需的最小摄像头数量。

示例 1:
输入:[0,0,null,0,0] 输出:1 解释:如图所示,一台摄像头足以监控所有节点。

本题使用贪心算法(遇事不决用贪心),从下往上进行搜索(从上往下后期要解决的节点数量过多),叶子节点的父节点作为摄像头所覆盖的区域是最多的,因此使用后序遍历,使用类似回溯的方式遍历整棵树并及时记录状态; 0表示未覆盖,1表示有摄像头,2表示已覆盖; 那空节点怎么办?标记为已覆盖(return),如果作为摄像头会影响叶子结点,如果作为未覆盖会使得叶子节点变成摄像头来覆盖空节点; 可能遇到的情况包括:子节点都覆盖,此节点作为上一个节点的叶子节点,标记为未覆盖即可;子节点只要有一个是未覆盖,父节点必须作为摄像头去覆盖;子节点有一个是摄像头,只

968. 监控二叉树(hard)最先出现在Python成神之路

版权声明:
作者:dingding
链接:https://www.techfm.club/p/25505.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>