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
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if((p == NULL && q != NULL) || (p != NULL && q == NULL)){
return false;
}
if(p == NULL && q == NULL){
return true;
}
if(p->val != q->val){
return false;
}
return isSameTree(p->left, q->left)&&isSameTree(p->right, q->right);}
};
tips:
終止條件:
- 一邊空一邊非空->return false
- 兩邊為空->return true
- 兩邊val相異->return false
return 左右兩子樹遞迴且都為true
Runtime: 0 ms, faster than 100.00% of C++ online submissions for Same Tree.
Memory Usage: 9.8 MB, less than 92.36% of C++ online submissions for Same Tree.