0. 题目
检验 root
中是否包含和 subRoot
具有相同结构和节点值的子树。
1. 深搜dfs 暴力匹配 o(|t|*|s|) o(max(dt,ds))
寻找root子树中是否有subRoot
ishave:以root为根的子树 与 subRoot是否完全相等。
isSubtree:寻找树中是否有子树与subRoot完全相等 :root本身与subRoot是否相等,左/右子树中是否有子树与其相等。
class Solution(object):
def ishave(self,root,subRoot): # 以root为根的子树 与 subRoot是否完全相等。
# root与subRoot完全一样,return 1
if not subRoot and not root: return True #遍历完root和subroot所有的节点
if not subRoot or not root or root.val != subRoot.val: return False #不等
return self.ishave(root.left,subRoot.left) and self.ishave(root.right,subRoot.right)