Given the roots of two binary trees p and q, write a function to check if they are the same tree.
Two binary trees are considered the same if they are structurally identical and the nodes have the same values.
p: q: 1 1 / \ / \ 2 3 2 3
Input: p = [1,2,3], q = [1,2,3] Output: True Explanation: Both trees have identical structure and values at every node.
p: q: 1 1 / \ 2 2
Input: p = [1,2], q = [1,null,2] Output: False Explanation: Same values but different structure; p has a left child while q has a right child.
p: q: 1 1 / \ / \ 2 1 1 2
Input: p = [1,2,1], q = [1,1,2] Output: False Explanation: Same structure but different values at the leaf level.
p = [1,2,3], q = [1,2,3]