Binary Tree的题目。首先分析可知,对于剪左右子树的操作和从根节点操作是同质的,所以,设置好递归的出口root == None时候的操作,就开始递归调用处理其左右子树的根节点。然后,根据题目,如果节点自身为0,且左右子树的节点也为0,其可以被忽略,返回None,因此,需要设置helper函数,查看每个节点和其左右子节点是否为0.只要有任意一点返回1,则说明这个节点要按照原样返回。如果全为0,怎返回0。
class Solution:
def pruneTree(self, root: TreeNode) -> TreeNode:
if not root:return None
root.left = self.pruneTree(root.left)
root.right = self.pruneTree(root.right)
if root.val == 0 and self.helper(root.left) == 0 and self.helper(root.right) == 0:
return None
return root
def helper(self, node):
if not node:return 0
if node.val == 0 and self.helper(node.left) == 0 and self.helper(node.right) == 0:return 0
return 1