python,自定义判断子结构函数

树的子结构

http://www.nowcoder.com/questionTerminal/6e196c44c7004d15b1610b9afca8bd88

树的子树与子结构定义:
子树的意思是只要包含了一个结点,就得包含这个结点下的所有节点.
子结构的意思是包含了一个结点,可以只取左子树或者右子树,或者都不取。
递归,以A的每个节点为根节点,与B进行比较,比较过程定义为一个search函数
遍历A的所有节点使用深度优先搜索,递归调用HasSubtree()

class Solution:
    def HasSubtree(self, pRoot1, pRoot2):
        def search(root1, root2):
            if not root2:
                return True
            if root1 and root1.val == root2.val:
                return search(root1.left, root2.left) and  search(root1.right, root2.right)
            else:
                return False
        if not pRoot1 or not pRoot2:
            return False
        return search(pRoot1, pRoot2) or self.HasSubtree(pRoot1.left, pRoot2) or self.HasSubtree(pRoot1.right, pRoot2)
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务