class Solution {
public:
bool isSymmetric(TreeNode* root) {
return travel(root, root);
}
bool travel(TreeNode* root1, TreeNode* root2) {
if (!root1 && !root2)return true;
if (!root1 || !root2)return false;
return root1->val == root2->val && travel(root1->left, root2->right) && travel(root1->right, root2->left);
}
};
class Solution {
public:
bool isSymmetric(TreeNode* root) {
int size = 1, i = 0;
vector<TreeNode*>que;
if (root)que.push_back(root);
while (!que.empty()) {
TreeNode* p = que.front();
i++;
que.erase(que.begin());
if (p) {
que.push_back(p->left);
que.push_back(p->right);
}
if (i == size) {
i = 0, size = que.size();
for (int j = 0; j < que.size() / 2; j++) {
if (que[j] != NULL && que[size - j - 1] != NULL && que[j]->val == que[size - j - 1]->val)
1;
else if (que[j] == NULL && que[size - j - 1] == NULL)
1;
else
return false;
}
}
}
return true;
}
};