剑指 Offer 26. 树的子结构(python)

导读:本篇文章讲解 剑指 Offer 26. 树的子结构(python),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

树的子结构

leetcode 链接

解题思路 & 方法

遍历 A 树,找到和 B 数相同的 root node
A.left, A.right 和 B ,使用 isSubStructure 递归
当找到相同的 root node 后,再判断这个 root node 下的子树是否相同
使用 subStructureCheck 这个函数
递归情况:A.left、B.left 和 A.right、B.right 进行比较
基情况:
B 被遍历完毕,说明 B 是 A 的子树
A 被遍历完毕 或者 A.val != B.val,说明 B 不是 A 的子树

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def subStructureCheck(self,A :TreeNode, B:TreeNode) -> bool:
        if B is None:
            return True
        
        if A is None or (A.val != B.val):
            return False

        return self.subStructureCheck(A.left, B.left) and self.subStructureCheck(A.right, B.right)

    def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
        result = False
        if A and B:
            if A.val == B.val:
                result = self.subStructureCheck(A,B)
            if not result:
                result = self.isSubStructure(A.left,B)
            if not result:
                result = self.isSubStructure(A.right,B)
        return result

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76923.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!