Python 中的根到葉路徑中的節點不足
假設我們有一棵二叉樹。如果所有從根到葉的路徑與此節點相交併且路徑的和嚴格小於限制,則該節點被稱為不足。我們必須同時刪除所有不足的節點,然後返回結果二叉樹的根。因此,如果樹如下,限制為 1 −
則輸出樹將變為 −
為了解決此問題,我們將執行以下步驟 −
- 定義 solve() 方法,該方法將採用 root 和 limit
- 如果節點沒有左子樹和右子樹,則
- 如果 root 的值小於 1,則返回 null,否則返回 root
- 如果 root 有左子樹,則 root 的左側 := solve(root 的左側, limit – root 的值)
- 如果 root 有右子樹,則 root 的右側 := solve(root 的右側, limit – root 的值)
- 如果 root 有左子樹,或右子樹,或兩者都有,則返回 root,否則返回 null。
讓我們看看以下實現來獲得更好的理解 −
示例
class Solution(object): def sufficientSubset(self, root, limit): """ :type root: TreeNode :type limit: int :rtype: TreeNode """ if not root.left and not root.right: return None if root.val<limit else root if root.left: root.left= self.sufficientSubset(root.left,limit-root.val) if root.right: root.right = self.sufficientSubset(root.right,limit-root.val) return root if root.left or root.right else None
輸入
[1,2,3,4,-99,-99,7,8,9,-99,-99,12,13,-99,14] 1
輸出
[1,2,3,4,null,null,7,8,9,null,14]
廣告