Day96 | 灵神 | 二叉树 相同的树

100.相同的树

100. 相同的树 - 力扣(LeetCode)

思路:

就是个easy题没啥好说的,就是遍历就行

不同的情况是

1.p为空q不为空

2.p不为空q为空

3.pq值不同

相同的情况是

pq均为空

注:pq值相同不能说明是true,还要看pq的左右子树

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(p==nullptr&&q!=nullptr)
return false;
else if(p!=nullptr&&q==nullptr)
return false;
else if(p==nullptr&&q==nullptr)
return true;
else if(p->val!=q->val)
return false;
else if(p->val==q->val)
return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
return false;
}
};

灵神的简洁版代码

1
2
3
4
5
6
7
8
9
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if (p == nullptr || q == nullptr) {
return p == q; // 必须都是 nullptr
}
return p->val == q->val && isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
}
};