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
居然有一天我也能轻易说出简单了