hhhhhhh没想到这道题卡住我的地方居然是 Optional
虽然我到现在没搞懂 Optional 是啥,但是 root 可以直接用 root.left 或 root.right 来看它的子树,于是我也就没管了

这道题很简单,用递归即可
若子树没有左右孩子且 val 为 0,则认为该子树可删去,返回 None

代码如下:

def pruneTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
    if root == None:
        return None

    left_node = self.pruneTree(root.left)
    right_node = self.pruneTree(root.right)
     
    if left_node == None:
        root.left = None
    
    if right_node == None:
        root.right = None

    if root.val == 0 and left_node == None and right_node == None:
        return None

    return root

居然有一天我也能轻易说出简单了