Time: → Reason: Need to visit each node from both trees.
Space: → Reason: Recursive call stack of the height of the tree which could be in a skewed tree
Code
class Solution:
def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
if not p and not q:
return True
if not p or not q:
return False
# at this point, we know for sure both nodes exist
if p.val != q.val:
return False
return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)