0
点赞
收藏
分享

微信扫一扫

【剑指offer】026.树的子结构

小布_cvg 2022-04-16 阅读 43
leetcode

题目

【剑指offer】026.树的子结构
判断树B是否为A的子结构

解法

递归的思路,应该先想到拆分子问题。借助先序遍历的流程,如果A当前节点值和B当前节点值相等,那么则可以调用isContain()判断以这两个节点为根节点的两个子树是否存在子结构关系。。如果不存在,则看A的左子树和B关系,否则看右子树和B关系。

class Solution:
    def isContain(self, A, B):
        if B is None:
            return True
        if A is None:
            return False
        if A.val != B.val:
            return False
        return self.isContain(A.left, B.left) and self.isContain(A.right, B.right)
    def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
        if B is None or A is None:
            return False
        if A.val==B.val and self.isContain(A, B):
            return True
        return self.isSubStructure(A.left, B) or self.isSubStructure(A.right, B)
举报

相关推荐

0 条评论