• 0968. Binary Tree Cameras (H)


    Binary Tree Cameras (H)

    题目

    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.

    Example 1:

    Input: [0,0,null,0,0]
    Output: 1
    Explanation: One camera is enough to monitor all nodes if placed as shown.
    

    Example 2:

    Input: [0,0,null,0,null,0,null,null,0]
    Output: 2
    Explanation: At least two cameras are needed to monitor all nodes of the tree. The above image shows one of the valid configurations of camera placement.
    

    Note:

    1. The number of nodes in the given tree will be in the range [1, 1000].
    2. Every node has value 0.

    题意

    在二叉树中选取任意个结点放上一个照相机,每个照相机能覆盖当前结点、当前结点的父结点、当前结点的直接子结点。问最少需要放几个照相机能够覆盖所有结点。

    思路

    贪心。从最底下的结点开始往上,对于当前结点有三种情况需要放置照相机:(1) 当前结点的左子结点未被覆盖;(2) 当前结点的右子结点未被覆盖;(3) 当前结点未被覆盖,且无父结点。其他情况无需放置,最大化每个照相机的覆盖范围。


    代码实现

    Java

    class Solution {
        private int count;
        private Set<TreeNode> set;
    
        public int minCameraCover(TreeNode root) {
            count = 0;
            set = new HashSet<>();
    
            set.add(null);
            dfs(root, null);
    
            return count;
        }
    
        private void dfs(TreeNode root, TreeNode parent) {
            if (root == null) return;
    
            dfs(root.left, root);
            dfs(root.right, root);
    
            if (parent == null && !set.contains(root) || !set.contains(root.left) || !set.contains(root.right)) {
                set.add(root);
                set.add(root.left);
                set.add(root.right);
                set.add(parent);
                count++;
            }
        }
    }
    
  • 相关阅读:
    unittest中常用的几个断言
    unittest中忽略某些测试用例的执行
    unittest测试套件
    unittest中的Empty suite错误
    找水王
    SCRUM冲刺day04
    SCRUM冲刺day03
    SCRUM冲刺day02
    SCRUM冲刺day01
    学习进度条week13
  • 原文地址:https://www.cnblogs.com/mapoos/p/14774489.html
Copyright © 2020-2023  润新知