class BitNode(object):
def __init__(self):
self.data = None
self.lchild = None
self.rchild = None
class Solution(object):
def isSubtree(self, root1, root2): # 用于判断的主函数,递归得遍历A的每一个结点,并将其作为新的根节点,再与B进行比较
"""
:type s: BitNode
:type t: BitNode
:rtype: bool
"""
if not root1:
return False
return self.isEqual(root1,root2) or self.isSubtree(root1.lchild, root2) or self.isSubtree(root1.rchild, root2)
# 使用or相连,即其中只要有一个s的子树与t相同,则返回True
def isEqual(self, S, T): # 以S为根节点,判断S和T是否相等
if not S and not T:
return True
if S and T:
if S.data != T.data:
return False
return self.isEqual(S.lchild, T.lchild) and self.isEqual(S.rchild, T.rchild)
else:
return False
if __name__=&