1. problem
給定一個二元樹根和一個整數目標,刪除所有值為目標的葉節點。
注意,一旦你刪除了一個值為target的葉子節點,如果它的父節點變成了葉子節點並且值為target,那麼它也應該被刪除(你需要繼續這樣做直到你不能)。
2. thought
利用postorder遞迴特性,
- 確認左節點存在, 若有遞迴左節點
- 確認右節點存在, 若有遞迴右節點
- 確認左右節點為相同(None==None) 且 等於target值, 則回傳None, 否則維持原root
3. solution
class Solution: _list = [] def removeLeafNodes(self, root: Optional[TreeNode], target: int) -> Optional[TreeNode]: if root.left: root.left = self.removeLeafNodes(root.left, target) if root.right: root.right = self.removeLeafNodes(root.right, target) return None if root.left == root.right and root.val==target else root
|