题目:
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
判断一棵二叉树是否是镜像的,主要思路是基于对当前节点的判断之后进行递归,对于非递归方式暂未实现。
代码如下:
bool isSymmetric(TreeNode* root)
{
if(!root) return true;
if (root->left && root->right)
{
if(root->left->val == root->right->val)
return isSymmetricHelper(root->left, root->right);
else return false;
}
else if(!root->left && !root->right) return true;
else return false;
}
bool isSymmetricHelper(TreeNode * p, TreeNode * q)
{
if(!p && !q) return true;
else if(p && q)
{
if(p->val == q->val)
return isSymmetricHelper(p->left, q->right) && isSymmetricHelper(p->right, q->left);
else return false;
}
else return false;
}