Time: 22:39

  • Made one mistake with the logic is all

Todo

Make the code cleaner like you would in the neetcode solution

Neetcode Cleaner Solution

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
 
 
class Solution:
    def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
        if not p and not q:
            return True
        if p and q and p.val == q.val:
            return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
        else:
            return False

My Solution

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def r(self, na, nb):
        if na.val != nb.val:
            return False
        
        if na.left:
            if nb.left:
                isLeftEqual = self.r(na.left, nb.left)
                if not isLeftEqual:
                    return False
            else:
                return False
        elif nb.left:
            return False
        
        if na.right:
            if nb.right:
                isRightEqual = self.r(na.right, nb.right)
                if not isRightEqual:
                    return False
            else:
                return False
        elif nb.right:
            return False
        
        return True
 
    def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
        if not p:
            if not q:
                return True
            return False
        elif not q:
            return False
 
        
        return self.r(p, q)


References

https://leetcode.com/problems/same-tree/submissions/882511397/