MY
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(p==NULL)
{
if(q==NULL)
return 1;
else
return 0;
}
else
{
if(q==NULL)
return 0;
if(p->val==q->val)
{
return (isSameTree(p->left, q->left))&&(isSameTree(p->right, q->right));
}
else
return 0;
}
}
};
class Solution {
public:
bool isSameTree(TreeNode *p, TreeNode *q) {
if(!p && !q) return true;
if(!p || !q) return false; //这里因为上面已经排除两个都是NULL的情况了,所以这里只有一个NULL的情况才会返回false,正确。
return (p->val == q->val) && //简洁
isSameTree(p->left, q->left) &&
isSameTree(p->right, q->right);
}
};
更好理解的
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if (p != nullptr && q != nullptr)
return ( isSameTree(p->left, q->left) && isSameTree(p->right, q->right) && p->val==q->val);
else if (p == nullptr && q == nullptr)
return true;
else
return false;
}
};