我把这棵树分成左右部分来存储,进队的时候左右相反;
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isSymmetric(TreeNode* root) {
queue<TreeNode*>quel;
queue<TreeNode*>quer;
if(root==nullptr)return true;
if(root->left==nullptr&&root->right==nullptr)return true;
quel.push(root->left);
quer.push(root->right);
while(!quel.empty()|| !quer.empty())
{
TreeNode* le=quel.front();
quel.pop();
TreeNode* ri=quer.front();
quer.pop();
if(le==nullptr&&ri==nullptr)
continue;
if(le==nullptr||ri==nullptr)
return false;
if(le->val!=ri->val)
return false;
quel.push(le->left);
quel.push(le->right);
quer.push(ri->right);
quer.push(ri->left);
}
return true;
}
};