LeetCode 968 監控二叉樹(DFS)

2021-10-09 16:17:28 字數 912 閱讀 1088

給定乙個二叉樹,我們在樹的節點上安裝攝像頭。

節點上的每個攝影頭都可以監視其父物件自身及其直接子物件

計算監控樹的所有節點所需的最小攝像頭數量

示例 1:

輸入:[0,

0,null,0,

0]輸出:1

解釋:如圖所示,一台攝像頭足以監控所有節點。

示例 2:

輸入:[0,

0,null,

0,null,

0,null,null,0]

輸出:2

解釋:需要至少兩個攝像頭來監視樹的所有節點。 上圖顯示了攝像頭放置的有效位置之一。

給定樹的節點數的範圍是 [1,

1000

]。每個節點的值都是 0。

class

solution

intdfs

(treenode* root)

else

if(l==

1&& r==1)

//1種情況,左右子節點都被監控了

return0;

//本節點無須安裝,但是需要被監控

else

//12,21,22}}

;

24 ms 20.6 mb

我的csdn部落格位址

LeetCode 968 監控二叉樹

思路 貪心 樹狀dp 1.貪心 對於樹來說,監控父節點一定不監控子節點覆蓋的點多,因此只要從葉子節點處貪心,同時記錄當前節點的狀態即可,節點的有三種狀態 0 節點未被覆蓋 1 節點被覆蓋但不是監控點 2 節點為覆蓋點 2.樹狀dp 節點同樣是這三種狀態,dp i j 為子樹 i 為 j 狀態時被覆蓋...

leetcode 968 監控二叉樹

給定乙個二叉樹,我們在樹的節點上安裝攝像頭。節點上的每個攝影頭都可以監視其父物件 自身及其直接子物件。考慮給乙個節點是否安裝camera,有以下幾種考慮方式 1.若考慮的是根節點,該節點可以由自身 左孩子 右孩子安裝camera來覆蓋 2.若考慮的是樹中某個節點,該節點可以由自身 左孩子 右孩子 父...

leetcode 968 監控二叉樹

題目鏈結 給定乙個二叉樹,我們在樹的節點上安裝攝像頭。節點上的每個攝影頭都可以監視其父物件 自身及其直接子物件。計算監控樹的所有節點所需的最小攝像頭數量。不會做。definition for a binary tree node.struct treenode class solution 0 不可...