1.给定一个二叉树,检查它是否是镜像对称的。
2.代码展示
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool judgemirror(struct TreeNode* left,struct TreeNode* right)
{
if (left == NULL && right ==NULL)
{
return true;
}
if (left == NULL || right ==NULL)
{
return false;
}
if (left->val != right->val)
{
return false;
}
return judgemirror(left->left,right->right)&&
judgemirror(left->right,right->left);
}
bool isSymmetric(struct TreeNode* root)
{
if(root == NULL)
{
return true;
}
return judgemirror(root->left,root->right);
}
3.解题思路
我们先判断是否为空树,如果是就返回true,不是 就继续向下遍历它的左右子树,如果左右子树为空,返回true,不全为空返回false,都不为空的时候,我们要根据镜像对称,找出判断条件,判断左子树和右子树是否相等,如果相等就继续向下,遍历左子树的左子树,和右子树的右子树对应的val是否相等,遍历左子树的右子树,和右子树的左子树对应的val是否相等,如果都符合条件,直到找到叶子节点,就返回。在解题的时候如果不清楚结构,我们可以画图去很好的找到规律。