Python实现LeetCode 814二叉树剪枝的问题解惑
关于LeetCode 814题「二叉树剪枝」代码问题的疑问
我在解决LeetCode第814题「Binary Tree Pruning(二叉树剪枝)」时遇到了问题,题目要求返回一棵修改后的二叉树,移除所有不包含值1的子树。
以下是我的初始代码:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def pruneTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: if root is None: return None self.pruneTree(root.left) self.pruneTree(root.right) if root.val == 0 and root.left is None and root.right is None: root = None return return root
遗憾的是,这段代码没有得到预期结果,运行出现错误。之后我得到了一段可以正常运行的代码:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def pruneTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: if root is None: return None root.left = self.pruneTree(root.left) root.right = self.pruneTree(root.right) if root.val == 0 and root.left is None and root.right is None: root = None return return root
我无法理解为何未对root.left和root.right进行赋值的初始代码无法正常工作,而修改后的赋值版本可以。希望有人能解释其中的底层逻辑问题,帮助我理解。
内容的提问来源于stack exchange,提问作者user22222314
相关产品推荐
相关产品推荐

