leetcode968. 监控二叉树(dfs)
生活随笔
收集整理的這篇文章主要介紹了
leetcode968. 监控二叉树(dfs)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個二叉樹,我們在樹的節點上安裝攝像頭。
節點上的每個攝影頭都可以監視其父對象、自身及其直接子對象。
計算監控樹的所有節點所需的最小攝像頭數量。
輸入:[0,0,null,0,0]
輸出:1
解釋:如圖所示,一臺攝像頭足以監控所有節點。
代碼
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ class Solution {int cnt=0;public int minCameraCover(TreeNode root) {if(getMinCameraCover(root)==0) cnt++;return cnt;}//返回值代表節點的狀態 1是被裝了攝像頭 2是被子節點罩的 3是0沒人罩的public int getMinCameraCover(TreeNode root) {if(root==null) return 2;int l=getMinCameraCover(root.left);int r=getMinCameraCover(root.right);if(l==0||r==0)//子節點沒人監控,需要該節點監控他{cnt++;return 1;//告訴父節點 他被監控了}else if(r==1||l==1)//該節點已經被子節點監控了{return 2;//告訴父節點沒人監控他}return 0;//告訴父節點要裝監控,不然這個節點就沒監控了} }總結
以上是生活随笔為你收集整理的leetcode968. 监控二叉树(dfs)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦连续梦到一个人说明什么
- 下一篇: leetcode617. 合并二叉树(d