題目:
思路+代碼:
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))