题目描述
给你一个二叉树的根节点 root , 检查它是否轴对称。
示例1
输入:root = [1,2,2,3,4,4,3]
输出:true
示例2
输入:root = [1,2,2,null,3,null,3]
输出:false
提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100
思路
借助dfs进行递归的调用,不断比较
case1:左节点和右节点都为空 return ture
case 2: 左节点和右节点有一个为空return false
case 3: 左节点和右节点值不一样return false
在 dfs中递归调用,不断 比较left->left和right->right
&&比较 left->right和right->left
递归调用的入口在根节点。
递归:从上到下层层展开,然后从下到上一步步的回溯返回。
代码
class Solution{
public:
bool isSymmetric(TreeNode* root){
if(!root) return true;
return dfs(root->left,root->right);
}
bool dfs(TreeNode*left,TreeNode* right){
//3种case
if(left==nullptr && right==nullptr) return true;
if(left==nullptr || right==nullptr) return false;
if(left->val != right->val) return false;
//递归
return dfs(left->left,right->right)&&dfs(left->right,right->left);
}
};