思路与101完全相同
迭代:
class Solution {
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
if(!p && !q) return true;
queue<TreeNode*> que;
que.push(p);
que.push(q);
while(!que.empty()){
TreeNode* left = que.front();
que.pop();
TreeNode* right = que.front();
que.pop();
if(!left && !right) continue;
if(!left || !right || left->val != right->val) return false;
que.push(left->left);
que.push(right->left);
que.push(left->right);
que.push(right->right);
}
return true;
}
};
递归:
class Solution {
private:
bool compare(TreeNode* p, TreeNode* q){
if(!p && !q) return true;
else if(!p && q) return false;
else if(p && !q) return false;
else if(p->val != q->val) return false;
bool leftside = compare(p->left, q->left);
bool rightside = compare(p->right, q->right);
bool issame = leftside && rightside;
return issame;
}
public:
bool isSameTree(TreeNode* p, TreeNode* q) {
bool res;
res = compare(p, q);
return res;
}
};