same-tree.py (743B)
1 # Definition for a binary tree node. 2 # class TreeNode: 3 # def __init__(self, val=0, left=None, right=None): 4 # self.val = val 5 # self.left = left 6 # self.right = right 7 class Solution: 8 def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: 9 right = p 10 left = q 11 return dfs(left, right) 12 13 14 def dfs(left, right): 15 16 # base case 17 none = 0 18 if right is None: 19 none += 1 20 if left is None: 21 none += 1 22 if none == 1: 23 return False 24 if none == 2: 25 return True 26 27 left_id = dfs(left.left, right.left) 28 right_id = dfs(left.right, right.right) 29 current_id = left.val == right.val 30 31 return bool(min(left_id, right_id, current_id))