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.
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:
Input: p = [1,2,1], q = [1,1,2]
Output: false
- TC - O(N)
- Submission Detail
- Runtime: 6 ms
- Memory Usage: 10 MB
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(p == NULL and q == NULL) return true;
if(p == NULL or q == NULL) return false;
if(p -> val == q -> val)
return isSameTree(p -> left, q -> left) && isSameTree(p -> right, q -> right);
return false;
}
};
- Submission Detail
- Runtime: 0 ms
- Memory Usage: 9.9 MB
- 透過
logical operator
可以大大減少執行時間
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(p == NULL || q == NULL) return (p == q);
return (p -> val == q -> val) && isSameTree(p -> left, q -> left) && isSameTree(p -> right, q -> right);
}
};