def isSubtree(self, s, t): stack = [s] while stack: node = stack.pop(0) if node.val == t.val: if self.check(node, t): return True stack += [child for child in [node.left, node.right] if child] return False def check(self, first, second): if not first and not second: return True if first and second: return first.val == second.val and self.check(first.left, second.left) and self.check(first.right, second.right) return False