100. Same Tree

1. Description

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.

2. Example

Example 1

Example 1
Input: p = [1,2,3], q = [1,2,3]
Output: true

Example 2

Input: p = [1,2], q = [1,null,2]
Output: false

Example 3

Example 3
Input: p = [1,2,1], q = [1,1,2]
Output: false

3. Constraints

  • The number of nodes in both trees is in the range [0, 100].
  • -$10^4$ <= Node.val <= $10^4$

4. Solutions

n is min number of nodes in p and q
Time complexity: O(n)
Space complexity: O(logn->n)

class Solution {
public:
    bool isSameTree(TreeNode *p, TreeNode *q) {
        if (p == nullptr && q == nullptr) {
            return true;
        }
        if (p == nullptr || q == nullptr) {
            return false;
        }

        return p->val == q->val && isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
    }
};
comments powered by Disqus