题解 | #树的子结构#
树的子结构
http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88
1、根节点相同,判断根树是否包含子结构。
2、根节点不同,判断左右子树中是否包含子结构。
注意:3种情况只要有一种返回true即可。
class Solution: def HasSubtree(self, pRoot1, pRoot2): if not pRoot1 or not pRoot2: return False return bool(pRoot1 and pRoot2) and (self.recur(pRoot1, pRoot2))or self.HasSubtree(pRoot1.left, pRoot2) or self.HasSubtree(pRoot1.right, pRoot2) def recur(self, root1, root2): # 根节点相同了,判断是否子结构 if not root2: return True if not root1 or root1.val != root2.val: return False return self.recur(root1.left, root2.left) and self.recur(root1.right, root2.right)