class Solution {
public:
bool isSymmetric(TreeNode* root) {
if(!root) return true;
queue<TreeNode*> q;
q.push(root);
while(!q.empty())
{
int n=(int)q.size();
vector<int> check;
for(int i=1;i<=n;i++)
{
TreeNode* node=q.front();
q.pop();
if(node->left) {
q.push(node->left);
check.push_back(node->left->val);
}
else
check.push_back(-1);
if(node->right){
q.push(node->right);
check.push_back(node->right->val);
}
else
check.push_back(-1);
}
int x=(int) check.size();
int t=x/2;
for(int i=0;i<=t-1;i++)
{
if(check[i]!=check[x-1-i])
return false;
}
}
return true;
}
};