// 面试题28:对称的二叉树
// 题目:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和
// 它的镜像一样,那么它是对称的。
static bool is_symmetrical(const std::shared_ptr<node_bt<int>>& root)
{
if(root == nullptr)
{
return false;
}
std::queue<std::shared_ptr<node_bt<int>>> que;
que.push(root);
while(que.size() > 0)
{
auto node = que.front();
que.pop();
if(node->left!=nullptr&&node->right!=nullptr
&&node->left->data==node->right->data)
{
que.push(node->left);
que.push(node->right);
}
else if(node->left!=nullptr || node->right!=nullptr)
{
return false;
}
}
return true;
}