基础算法(四)判断二叉树是否对称
给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称)
例如:下面这棵二叉树是对称的
1
/ \
2 2
/ \ / \
3 4 4 3
下面这棵二叉树不对称。
1
/ \
2 2
\ \
3 3
也是用递归的思想去解决…
bool isSymmetric(TreeNode* root)
{
if(root == NULL)
{
return true;
}
else
return fun(root->left,root->right);
}
bool fun(TreeNode* l,TreeNode* r)
{
if(l ==NULL && r == NULL)
{
return true;
}
else if(l == NULL || r == NULL)
{
return false;
}
else if(l->val != r->val)
{
return false;
}
//镜像判断法
return fun(l->left, r->right)&&fun(l->right,r->left);
}
解释一下上面return为什么要这样写
1
/ \
l 2 2 r
/ \ / \
l->left 3 4 3 3 r->right
#可以看到l->left 和 r->right是对称的,但是l->right和r->left却不对称
#因为一边是4,一边是3
当 true && false 的时候,最终也还是false