Problem
Given the roots of two binary trees p and q, write a function to check if they are the same or not.
Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.
Algorithm
Recursion. If two trees are structurally identical for all the sub-trees, the node values are same and the left, right sub-tree are all structurally identical.
Code
# 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
print(p, q)
if (p and not q) or (not p and q) or (p.val != q.val) :
return False
if not self.isSameTree(p.left, q.left) :
return False
if not self.isSameTree(p.right, q.right) :
return False
return True