劍指offer【26】:判讀B是否是A的子結構

題目:

思路+代碼:

class Solution:
    # 思路:逆推法,要判斷B是否是A子結構就是判斷,拿B分別和A, A.left, A.right 開始比較;
    # 遞歸思路:
    #   1.遞歸結束判斷:B越過葉子節時True,  B越過葉子節點時,False, A.val != B.val 時False
    #   2.返回值:當A,B都存在時,遞歸判斷A.left,A.right
    def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool:
        def recur(A, B):
            if not B: return True
            if not A or A.val != B.val: return False
            return recur(A.left, B.left) and recur(A.right, B.right)

        return bool(A and B) and (recur(A, B) or self.isSubStructure(A.left, B) or self.isSubStructure(A.right, B))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章