968題 監控二叉樹(hard)

2021-10-09 16:42:14 字數 415 閱讀 6538

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

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

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

節點有三種狀態。遞迴從葉子節點開始處理。

//來自garrybest的答案

class

solution

// 0:該節點安裝了監視器 1:該節點可觀,但沒有安裝監視器 2:該節點不可觀

private

intdfs

(treenode node)

else

if(left ==

0|| right ==0)

else

return2;

}}

968 監控二叉樹

給定乙個二叉樹,我們在樹的節點上安裝攝像頭。節點上的每個攝影頭都可以監視其父物件 自身及其直接子物件。計算監控樹的所有節點所需的最小攝像頭數量。明確每個節點存在的狀態,當前節點只能存在三種狀態,0為未監控,1為已監控,2為安裝攝像頭,後序遍歷樹,先獲得左右節點的狀態資訊,根據左右節點的狀態資訊來設定...

968 監控二叉樹

關於樹的問題我們一般使用遞迴來解決。首先可以遍歷到樹的最底端 此節點的左右孩子都為空,空孩子標記為狀態1 標記此節點為已覆蓋 狀態0 如果乙個節點的其中乙個左右節點狀態為已覆蓋 即還未安裝監視器 那麼給此節點安裝監視器,並且記錄監視器數量的全域性變數自增。安裝監視器後,給節點標記狀態為2,那麼它的父...

968 監控二叉樹

貪心演算法 自底向上,每三層乙個攝像機,就能使得所用的攝像機最少。對最後乙個根節點做特判ans private int ans 0 public intmincameracover treenode root if dfs root 2 return ans 1 該節點沒設定攝像,但被監控。2 該節...