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.
Eg one:
Input: p = [1,2,3], q = [1,2,3]
Output: true
Eg Two:
Input: p = [1,2], q = [1,null,2]
Output: false
- Solution:
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
// p and q are both null
if (p == null && q == null) return true;
// one of p and q is null
if (q == null || p == null) return false;
if (p.val != q.val) return false;
return isSameTree(p.right, q.right) &&
isSameTree(p.left, q.left);
}
}
Hints:
Logic:
- Satisfy the first rule: if(p == null && q == null) return true;
- one of the p or q is null return false, key: even the final values are the same, the reuslt may be wrong
- call the function to finish recursion
Tips:
- Practice more recursion questions
- Think too much, focus on the result and one tree