类似于100. 相同的树/C++
class Solution {
public:
bool isSymmetric(TreeNode* root) {
return _isSymmetric(root,root);
}
bool _isSymmetric(TreeNode* node1, TreeNode* node2){
if(!node1 && !node2) return true;
if(!node1 || !node2) return false;
return node1->val == node2->val
&& _isSymmetric(node1->left,node2->right)
&& _isSymmetric(node1->right,node2->left);
}
};
bool isSymmetric(TreeNode* root) {
queue<TreeNode*> q;
q.push(root);
q.push(root);
while(!q.empty()){
TreeNode* node1 = q.front();
q.pop();
TreeNode* node2 = q.front();
q.pop();
if(!node1 && !node2) continue;
if(!node1 || !node2) return false;
if(node1->val != node2->val) return false;
q.push(node1->left);
q.push(node2->right);
q.push(node1->right);
q.push(node2->left);
}
return true;
}