微計算機 布林代數的二元樹_Leetcode #2331

閱讀時間約 4 分鐘

題目敘述

題目給定一個布林代數的二元樹,要求我們計算最後的結果。


葉子節點都是真假值

0代表False

1代表True


非葉子節點都是布林運算子

2代表boolean OR operator

3代表boolean AND operator


原本的英文題目敘述


測試範例

Example 1:

raw-image


Input: root = [2,1,3,null,null,0,1]
Output: true
Explanation: The above diagram illustrates the evaluation process.
The AND node evaluates to False AND True = False.
The OR node evaluates to True OR False = True.
The root node evaluates to True, so we return true.

Example 2:

Input: root = [0]
Output: false
Explanation: The root node is a leaf node and it evaluates to false, so we return false.

約束條件

Constraints:

  • The number of nodes in the tree is in the range [1, 1000].

節點總數目介於1~1000。

題目保證輸入不是空樹。

  • 0 <= Node.val <= 3

節點值都介於0~3之間。

  • Every node has either 0 or 2 children.

每個節點有0個或2個子節點。

  • Leaf nodes have a value of 0 or 1.

葉子節點的節點值一定是0或1。

  • Non-leaf nodes have a value of 2 or 3.

非葉子節點的節點值一定是2或3。


演算法 DFS + 布林代數模擬

抽象的想,每一次計算都可以這樣表達。

       布林運算子
/ \​
真假值 真假值


如果自己是葉子節點,直接返回真假值(True / False)

如果自己不是葉子節點
則根據子節點回傳的真假值(True/False)進行指定的布林運算(OR/AND)


程式碼 DFS + 布林代數模擬


class Solution:
def evaluateTree(self, root: Optional[TreeNode]) -> bool:

#F, T, OR, AND = 0, 1, 2, 3

## Leaf node with boolean value
if root.val in (0, 1):
return root.val

## Non-leaf node with boolean operator
elif root.val == 2:
return self.evaluateTree(root.left) | self.evaluateTree(root.right)

else:
return self.evaluateTree(root.left) & self.evaluateTree(root.right)

或者,額外根據計算結果進行化簡

class Solution:
def evaluateTree(self, root: Optional[TreeNode]) -> bool:

#F, T, OR, AND = 0, 1, 2, 3

## Leaf node with boolean value
if root.val in (0, 1):
return root.val

return ( self.evaluateTree(root.left) + self.evaluateTree(root.right) ) > (root.val-2)

複雜度分析

時間複雜度: O(n )

DFS拜訪整棵樹,每個節點至多拜訪一次。


空間複雜度: O(n )

DFS拜訪整棵樹,當整棵樹向左歪斜或向右歪斜時。有最大深度O(n)。


關鍵知識點

相當於布林代數的計算樹,根據定義好的計算規則進行模擬即可。


Reference

[1] Evaluate Boolean Binary Tree - LeetCode

82會員
417Content count
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
本篇文章討論了在給定二元矩陣中,如何使用Dijkstra算法找出從左上角到右下角的最安全路徑的安全分數。包括定義曼哈頓距離、最安全路徑的算法以及時間複雜度和空間複雜度分析。最終推薦Dijkstra algorithm和priority queue的使用。文章提供了參考文獻LeetCode的連結。
這篇文章討論了從二維整數陣列中挖掘金礦的問題。文章使用DFS模擬N4走法來解決問題,並提供了時間複雜度和空間複雜度的分析。這將有助於瞭解如何從地圖中挖取最多金礦。文章中提到了相關的關鍵知識點和參考資料。
題目敘述 輸入給定一個鏈結串列,整體看代表一個十進位的數字,各別看每個節點代表每個digit,分別從最高位~最低位個位數。 要求我們把原本的數字乘以二,並且以鏈結串列的形式返回答案。 原本的英文題目敘述
題目敘述 輸入給定一個鏈結串列的head node。 要求我們進行化簡,只要某個節點的右手邊存在比較大的節點,就刪除掉。 例如 5->2->13->3 5的右手邊有13,所以5刪除掉。 2的右手邊有13,所以2刪除掉。 13的右手邊沒有更大的節點,所以13留著。 3的右手邊沒有更大
這篇文章,會帶大家快速回顧DFS+回溯法框架(還沒看過或想複習的可以點連結進去)。 用DFS+回溯法框架,解開 組合數之和 Combination Sum 的全系列題目。 幫助讀者鞏固DFS+回溯法框架這個重要的知識點。 回顧 DFS+回溯法框架 白話的意思 # 列舉所以可能的情況,
今天的一魚三吃系列是透過 兩點之間是否存在一條路徑的題目,來回顧以前學過的DFS、BFS和Disjoint Set,鞏固圖論演算法的知識點。 英文的題目敘述在這裡 題目敘述 給定我們已知n個節點的圖,和圖上的每一條無向邊edges。 請問給定的起點start和終點end是否存在一條路徑可
本篇文章討論了在給定二元矩陣中,如何使用Dijkstra算法找出從左上角到右下角的最安全路徑的安全分數。包括定義曼哈頓距離、最安全路徑的算法以及時間複雜度和空間複雜度分析。最終推薦Dijkstra algorithm和priority queue的使用。文章提供了參考文獻LeetCode的連結。
這篇文章討論了從二維整數陣列中挖掘金礦的問題。文章使用DFS模擬N4走法來解決問題,並提供了時間複雜度和空間複雜度的分析。這將有助於瞭解如何從地圖中挖取最多金礦。文章中提到了相關的關鍵知識點和參考資料。
題目敘述 輸入給定一個鏈結串列,整體看代表一個十進位的數字,各別看每個節點代表每個digit,分別從最高位~最低位個位數。 要求我們把原本的數字乘以二,並且以鏈結串列的形式返回答案。 原本的英文題目敘述
題目敘述 輸入給定一個鏈結串列的head node。 要求我們進行化簡,只要某個節點的右手邊存在比較大的節點,就刪除掉。 例如 5->2->13->3 5的右手邊有13,所以5刪除掉。 2的右手邊有13,所以2刪除掉。 13的右手邊沒有更大的節點,所以13留著。 3的右手邊沒有更大
這篇文章,會帶大家快速回顧DFS+回溯法框架(還沒看過或想複習的可以點連結進去)。 用DFS+回溯法框架,解開 組合數之和 Combination Sum 的全系列題目。 幫助讀者鞏固DFS+回溯法框架這個重要的知識點。 回顧 DFS+回溯法框架 白話的意思 # 列舉所以可能的情況,
今天的一魚三吃系列是透過 兩點之間是否存在一條路徑的題目,來回顧以前學過的DFS、BFS和Disjoint Set,鞏固圖論演算法的知識點。 英文的題目敘述在這裡 題目敘述 給定我們已知n個節點的圖,和圖上的每一條無向邊edges。 請問給定的起點start和終點end是否存在一條路徑可
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
滴藥散瞳前看煙火,抱歉,來不及等漲停,歡迎潘瑋柏/張韶涵 本蛙不小心又打了酸民一巴掌 現代 這個匆忙時代 雖然少了時間 但千萬不要倦怠 今天的事交給今天去做 因為明天才有很多時間一起去瘋 本想點播What a feeling,怕酸民水準太低,英文有點難……
拓荒者一哥里拉德(Damian Lillard)今年夏天終於向球隊要求交易,喊出「賣我」並指明要去熱火,不過時至今日交易未見進展,《ESPN》名記者「WOJ」沃納洛斯基(Adrian Wojnarowski)指出,根本問題在於拓荒者不滿意熱火的交易籌碼,而熱火也不急著完成交易。目前熱火是交易里拉德的
Thumbnail
燒臘店 在今日的台灣各地已經十分常見,幾乎是陪伴許多人成長的食物記憶之一。相信對各位讀者來說,來個叉燒飯、鴨腿飯、燒肉飯,或是三寶飯解決午餐或晚餐是稀鬆平常不過的事,小編自己就非常喜愛燒臘,學生時代曾經每天吃燒臘連續吃好幾週都不會膩。燒臘店如此之多??你最愛哪一家呢??這篇來介紹香港威記燒臘。 香港
Thumbnail
🔗https://edjump.pse.is/4xxleq #「文化傳承才能永續」接任第三屆「高雄市台灣婚慶文化協會」理事長的李玟嫻是這麼說的。 經歷過疫情的考驗,協會在理事長的領導下,一再迎接高峰。除了多元化的課程外,在112年度更與三民河堤社區攜手合作,參加高雄市政府《雲世代小微企業數位轉型創
Thumbnail
作為【統計微學堂】第一篇文章,本文不直接開門見山談論統計概念及方法介紹,而是回應SPSS初學者經常面臨到首要問題「如何安裝SPSS軟體」,是直接購買正版嗎?或洽由統計公司以租代買方式?還是透過網路下載逕行使用?又或是使用學長姐所傳承版本?
Thumbnail
這是弗拉基米爾同志的一小步,卻是全宇宙生命體的一大步!  本系列文章所有情節均係虛構,如有雷同,涉嫌顛覆國家政權。
Thumbnail
這是一個義大利發明家很嚴肅的傳奇故事。 本故事所有情節均係虛構,如有雷同,怎麼可能。
Thumbnail
這是一個關於步式巨猿復仇塔巴奴里猩猩的嚴肅故事。這個故事告誡我們,在我們手中沒有一本黑色封皮聖經的情況下,不要隨便去招惹步式巨猿。 本文章所有情節均係虛構,如有雷同,關我屁事。
週三為這學期第一堂上課,習 慣在第一堂課花較多時間與孩子建立這一學期的默契, 也請孩子分享自己這學期的期待。 其中有一個男孩說,他想擺脫學校作文的框架,像是字數限制。 我好奇問他:「某某,字數限制讓你很困擾嗎?」 孩子略帶不平的語氣:「有啊,每次學校老師都規定字數,我寫寫寫,數了數,剩200字,但是
Thumbnail
於我而言,是好的循環,是令人愉悅的迴圈,有如毒品般的作用,讓我自嗨、自爽,微上癮。
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
滴藥散瞳前看煙火,抱歉,來不及等漲停,歡迎潘瑋柏/張韶涵 本蛙不小心又打了酸民一巴掌 現代 這個匆忙時代 雖然少了時間 但千萬不要倦怠 今天的事交給今天去做 因為明天才有很多時間一起去瘋 本想點播What a feeling,怕酸民水準太低,英文有點難……
拓荒者一哥里拉德(Damian Lillard)今年夏天終於向球隊要求交易,喊出「賣我」並指明要去熱火,不過時至今日交易未見進展,《ESPN》名記者「WOJ」沃納洛斯基(Adrian Wojnarowski)指出,根本問題在於拓荒者不滿意熱火的交易籌碼,而熱火也不急著完成交易。目前熱火是交易里拉德的
Thumbnail
燒臘店 在今日的台灣各地已經十分常見,幾乎是陪伴許多人成長的食物記憶之一。相信對各位讀者來說,來個叉燒飯、鴨腿飯、燒肉飯,或是三寶飯解決午餐或晚餐是稀鬆平常不過的事,小編自己就非常喜愛燒臘,學生時代曾經每天吃燒臘連續吃好幾週都不會膩。燒臘店如此之多??你最愛哪一家呢??這篇來介紹香港威記燒臘。 香港
Thumbnail
🔗https://edjump.pse.is/4xxleq #「文化傳承才能永續」接任第三屆「高雄市台灣婚慶文化協會」理事長的李玟嫻是這麼說的。 經歷過疫情的考驗,協會在理事長的領導下,一再迎接高峰。除了多元化的課程外,在112年度更與三民河堤社區攜手合作,參加高雄市政府《雲世代小微企業數位轉型創
Thumbnail
作為【統計微學堂】第一篇文章,本文不直接開門見山談論統計概念及方法介紹,而是回應SPSS初學者經常面臨到首要問題「如何安裝SPSS軟體」,是直接購買正版嗎?或洽由統計公司以租代買方式?還是透過網路下載逕行使用?又或是使用學長姐所傳承版本?
Thumbnail
這是弗拉基米爾同志的一小步,卻是全宇宙生命體的一大步!  本系列文章所有情節均係虛構,如有雷同,涉嫌顛覆國家政權。
Thumbnail
這是一個義大利發明家很嚴肅的傳奇故事。 本故事所有情節均係虛構,如有雷同,怎麼可能。
Thumbnail
這是一個關於步式巨猿復仇塔巴奴里猩猩的嚴肅故事。這個故事告誡我們,在我們手中沒有一本黑色封皮聖經的情況下,不要隨便去招惹步式巨猿。 本文章所有情節均係虛構,如有雷同,關我屁事。
週三為這學期第一堂上課,習 慣在第一堂課花較多時間與孩子建立這一學期的默契, 也請孩子分享自己這學期的期待。 其中有一個男孩說,他想擺脫學校作文的框架,像是字數限制。 我好奇問他:「某某,字數限制讓你很困擾嗎?」 孩子略帶不平的語氣:「有啊,每次學校老師都規定字數,我寫寫寫,數了數,剩200字,但是
Thumbnail
於我而言,是好的循環,是令人愉悅的迴圈,有如毒品般的作用,讓我自嗨、自爽,微上癮。