判断是否为镜像二叉树
判断是否为镜像二叉树
把树root,强行当做两颗树:root,root;判断这两棵树是否镜像
条件1:这两棵树的根节点相等
条件2:第1颗树的左孩子val 与 第2颗树的右孩子val相等
第1颗树的右孩子val 与 第1颗树的左孩子val相等
class Solution {
public:
bool isSymmetric(TreeNode* root)
{
return ismirror(root,root);
}
bool ismirror(TreeNode* p,TreeNode* q)
{
if (!p && !q)
{// 两棵树都为空
return true;
}
if (!p || !q)
{// 其中一棵树为空
return false;
}
if (p->val == q->val)
{// 根节点护卫镜像,需要进行条件判断
if (ismirror(p->left, q->right) && ismirror(p->right, q->left))
{
return true;
}
}
return false;
}
};