zoukankan      html  css  js  c++  java
  • [leetCode]968. 监控二叉树

    在这里插入图片描述

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
    
        // 每个节点右三种状态:0.无覆盖 1.有摄像头 2.有覆盖
        private final Integer UNCOVERED = 0, COVERED = 2, HASCAM = 1; 
    
        private Integer result = 0;
    
        public int minCameraCover(TreeNode root) {
            // 4. 递归结束如果根节点无覆盖则需要放摄像头
            if (UNCOVERED == traversal(root)) {
                result++;
            }
            return result;
        }
    
        private int traversal(TreeNode cur) {
            // 空节点,该节点有覆盖
            if (cur ==  null) return COVERED;
            int left = traversal(cur.left); // 左
            int right = traversal(cur.right); // 右
    
            // 逻辑处理     中
            // 1.如果左子节点和右子节点都覆盖了那么当前节点为无覆盖                  
            if (left == COVERED && right == COVERED) 
                return 0;
            // 2.有一个孩子没覆盖,父节点就应该放摄像头
            if (left == 0 || right == 0) {
                result++;
                return HASCAM; 
            }
            // 3.如果左右节点只要其中一个有摄像头则该节点为覆盖状态
            if (left == 1 || right == 1) {
                return COVERED;
            }
            return -1;
        }
    }
    
  • 相关阅读:
    fpga不错的源代码下载地址
    iverilog命令选项解释
    altera官方视频教程下载地址
    niosII EDS和QuartusII安装心得体会
    FPGA的JTAG口很脆弱?
    poj2379
    poj2472
    poj2935
    poj3366
    poj1493
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13859882.html
Copyright © 2011-2022 走看看