樹 A041 LC 監控二叉樹(後序遍歷)

2021-10-07 20:00:38 字數 726 閱讀 4768

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

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

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

輸入:[0,0,null,0,null,0,null,null,0]

輸出:2

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

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

每個節點的值都是 0。

方法一:後序遍歷

子節點可能的狀態有(我們約定為):

class

solution

int l =

dfs(root-

>left)

, r =

dfs(root-

>right);if

(l ==

0|| r ==0)

else

if(l ==

1|| r ==1)

else

}int

mincameracover

(treenode* root)

};

複雜度分析

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...

leetcode筆記 145 二叉樹的後序遍歷

題目 給定乙個二叉樹,返回它的 後序 遍歷 1 遞迴寫法 class solution 2 迭 法 class solution else return res 3 這種思路和劍指32題中的思路是一樣的,只不過最後反轉鍊錶的做法不一樣。同樣是使用棧,新增節點時把後序當作 根 右 左,然後再反轉一下即...

leetcode練習 145 二叉樹的後序遍歷

給定乙個二叉樹,返回它的 後序 遍歷。示例 輸入 1,null,2,3 12 3輸出 3,2,1 二叉樹的後序遍歷有個很奇怪的特點,就是通過對二叉樹使用棧進行層序遍歷,可以恰好得到乙個後序遍歷的結果。class solution if t right reverse res.begin res.en...