博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode#递归#968监控东二叉树
阅读量:3952 次
发布时间:2019-05-24

本文共 1446 字,大约阅读时间需要 4 分钟。

给定一个二叉树,我们在树的节点上安装摄像头。

节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。

计算监控树的所有节点所需的最小摄像头数量。

在这里插入图片描述

示例 1:

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/binary-tree-cameras
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {
public int minCameraCover(TreeNode root) {
if(root==null) return 0; if(root.left==null && root.right==null) return 1; return new Op(root).get(); } static class Op{
final TreeNode root; final int no_cover = 0,has_camera = 1, has_cover =2; int res; int dfs(TreeNode root) {
if(root==null) return has_cover; int left = dfs(root.left),right = dfs(root.right); //被监测到 if(left == has_cover && right==has_cover) return no_cover; //左右子树没有监测,要在这个点 监测 if(left==no_cover|| right==no_cover) {
res++; return has_camera; } //cur node no camera and has not be cover if(left==has_camera||right==has_camera) {
return has_cover; } return no_cover; } Op(TreeNode root) {
this.root = root; } int get() {
int node = dfs(root); if(node==no_cover) return res+1; return res; } }}
你可能感兴趣的文章
阻塞锁与自旋锁
查看>>
【面试官:select语句和update语句分别是怎么执行的
查看>>
scala学习之安装问题
查看>>
LDAP常见错误码
查看>>
linux yum安装rpm包出现问题
查看>>
idea编译报错类似xxx.java:[85,65] 错误: 找不到符号
查看>>
ArrayList复制
查看>>
idea打开项目时,文件左下角显示橙色J
查看>>
SQL注入
查看>>
linux中ldconfig的使用介绍
查看>>
ldap适合入门学习
查看>>
ldap学习参考博客
查看>>
linux学习之source命令与alias(别名)使用
查看>>
MYSQL常用查询
查看>>
安装Linux虚拟机绑定IP操作
查看>>
centos7离线安装 mysql
查看>>
mysql学习使用一(查询)
查看>>
Linux 学习之sed命令详解
查看>>
JAVA基础——常用IO使用
查看>>
spring框架pom.xml文件解析
查看>>