题目描述
给你一个二叉树的根节点 root
, 检查它是否轴对称。
示例
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
解题思路
【步骤一】
左右根,后续递归。传参根节点的左右两个节点
【步骤二】
判断左右子树是否相等
【步骤三】
判断子树外侧是否相等,判断子树内侧是否相等
参考代码
class Solution {
public:
bool check(TreeNode*left,TreeNode*right){
if(left==nullptr&&right!=nullptr)//递归终止条件
return false;
else if(left!=nullptr&&right==nullptr)
return false;
else if(left==nullptr&&right==nullptr)
return true;
else if(left->val!=right->val)
return false;
bool outsite=check(left->left,right->right);//外侧是否相等
bool insite=check(left->right,right->left);//内侧是否相等
bool result=outsite&&insite;
return result;
}
bool isSymmetric(TreeNode* root) {
bool result=check(root->left,root->right);
return result;
}
};