题目链接
bool isSymmetric(TreeNode *root) {
vector<TreeNode*> left_nodes;
vector<TreeNode*> right_nodes;
if (root != NULL)
{
if(root->left != NULL)
{
left_nodes.push_back(root->left);
}
if(root->right != NULL)
{
right_nodes.push_back(root->right);
}
}
while(!left_nodes.empty() && !right_nodes.empty())
{
TreeNode* left_node = left_nodes.back();
TreeNode* right_node = right_nodes.back();
if(left_node->val != right_node->val)
{
return false;
}
TreeNode* left_node_left = NULL;
TreeNode* left_node_right = NULL;
if(left_node->left != NULL)
{
left_node_left = left_node->left;
}
if(left_node->right != NULL)
{
left_node_right = left_node->right;
}
left_nodes.pop_back();
TreeNode* right_node_left = NULL;
TreeNode* right_node_right = NULL;
if(right_node->left != NULL)
{
right_node_left = right_node->left;
}
if(right_node->right != NULL)
{
right_node_right = right_node->right;
}
right_nodes.pop_back();
if(left_node_left != NULL && right_node_right != NULL)
{
left_nodes.push_back(left_node_left);
right_nodes.push_back(right_node_right);
}
else if(left_node_left == NULL && right_node_right == NULL)
{
}
else
{
return false;
}
if(left_node_right != NULL && right_node_left != NULL)
{
left_nodes.push_back(left_node_right);
right_nodes.push_back(right_node_left);
}
else if(left_node_right == NULL && right_node_left == NULL)
{
}
else
{
return false;
}
}
if(left_nodes.size() == right_nodes.size())
{
return true;
}
else
{
return false;
}
}