判斷兩棵二叉樹是否完全相同(結構相同且對應節點值相同)。
bool isSameTree(TreeNode* p, TreeNode* q) {
if (!p && !q) return true;
if (!p || !q) return false;
return p->val == q->val
&& isSameTree(p->left, q->left)
&& isSameTree(p->right, q->right);
}
bool isSameTree(TreeNode* p, TreeNode* q) {
if (!p && !q) return true;
if (!p || !q) return false;
queue q1, q2;
q1.push(p); q2.push(q);
while (!q1.empty()) {
TreeNode* a = q1.front(); q1.pop();
TreeNode* b = q2.front(); q2.pop();
if (a->val != b->val) return false;
if (a->left && b->left) { q1.push(a->left); q2.push(b->left); }
else if (a->left || b->left) return false;
if (a->right && b->right) { q1.push(a->right); q2.push(b->right); }
else if (a->right || b->right) return false;
}
return true;
}