题目链接:814. 二叉树剪枝
递归剪枝,当一个节点的左子树和右子树都被剪掉,且这个节点的值为 $0$,那这个子树都可以被剪掉。
class TreeNode:
"""Definition for a binary tree node."""
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def pruneTree(self, root: TreeNode | None) -> TreeNode | None:
def prune(node: TreeNode | None) -> TreeNode | None:
if node is None:
return None
l, r = prune(node.left), prune(node.right)
if l is None and r is None and node.val == 0:
return None
return TreeNode(node.val, l, r)
return prune(root)