leetcode 968 監控二叉樹

2021-10-09 16:48:26 字數 580 閱讀 9886

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

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

考慮給乙個節點是否安裝camera,有以下幾種考慮方式:

1.若考慮的是根節點,該節點可以由自身/左孩子/右孩子安裝camera來覆蓋;

2.若考慮的是樹中某個節點, 該節點可以由自身/左孩子/右孩子/父節點安裝camera來覆蓋;

3.若考慮的是葉節點,該節點可以由自身/父節點安裝camera來覆蓋。

現考慮第三種考慮方式(dfs出口):

如果我們把camera設定到葉節點上,那麼可以覆蓋它自己的父節點;

如果我們把camera設定到葉節點的父節點上,那麼可以覆蓋它自己的父節點/父節點的父節點/兄弟節點,顯然這種方案比上面那種要好,且能cover它。

class

solution

intdfs

(treenode *t)

if(left==

1||right==1)

return2;

return0;

}};

LeetCode 968 監控二叉樹

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

leetcode 968 監控二叉樹

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

LeetCode 968 監控二叉樹(DFS)

給定乙個二叉樹,我們在樹的節點上安裝攝像頭。節點上的每個攝影頭都可以監視其父物件 自身及其直接子物件。計算監控樹的所有節點所需的最小攝像頭數量。示例 1 輸入 0,0,null,0,0 輸出 1 解釋 如圖所示,一台攝像頭足以監控所有節點。示例 2 輸入 0,0,null,0,null,0,null...