解题思路:首先判断特殊情况,比如左右子树是否为一空一有,是否为两空,是否相等,然后递归判断外侧是否相等(即为左子树的左节点和右子树的右节点)和内侧是否相等(即为右子树的左节点和左子树的右节点)
具体代码:
class Solution {
public:
bool compare(TreeNode *left,TreeNode*right)
{
if(left==NULL&&right!=NULL)return false;
else if(right==NULL&&left!=NULL)return false;
else if(right==NULL&&left==NULL)return true;
else if(right->val!=left->val)return false;
bool outside=compare(left->left,right->right);
bool inside=compare(left->right,right->left);
bool result=(outside&&inside);
return result;
}
bool isSymmetric(TreeNode* root) {
return compare(root->left,root->right);
}
};
题目如下:
给你一个二叉树的根节点 root
, 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3] 输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3] 输出:false