Python 树的子结构

输入两颗二叉树A,B, 判断B是不是A的子结构。约定空树不是任何数的子结构

class Solution:
    def HasSubtree(self, pRoot1, pRoot2):
        if pRoot1 == None or pRoot2 == None:
            return False

        def hasEqual(pRoot1, pRoot2):
            if pRoot2 == None:
                return True
            if pRoot1 == None:
                return False
            if pRoot1.val == pRoot2.val:
                if pRoot2.left == None:
                    leftEqual = True
                else:
                    leftEqual = hasEqual(pRoot1.left, pRoot2.left)
                if pRoot2.right == None:
                    rightEqual = True
                else:
                    rightEqual = hasEqual(pRoot2.right, pRoot2.right)
                return leftEqual and rightEqual
            return False

        if pRoot1.val ==pRoot2.val:
            ret =hasEqual(pRoot1,pRoot2)
            if ret:
                return True


        ret = self.HasSubtree(pRoot1.left, pRoot2)
        if ret:
            return True

        ret = self.HasSubtree(pRoot1.right, pRoot2)
        return ret
发布了135 篇原创文章 · 获赞 121 · 访问量 4864

猜你喜欢

转载自blog.csdn.net/weixin_44208324/article/details/105312323