剑指 Offer 28. 对称的二叉树(简单)

孜孜不倦fly / 2023-08-08 / 原文

题目:

class Solution {
public:
    bool traversal(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;            
                                                               //剩下就是else:两个镜像节点值相同的情况。进入递归
        bool outside = traversal(left->left, right->right);    //外侧镜像节点对
        bool inside = traversal(left->right, right->left);     //内侧镜像节点对
        return outside&&inside;                                
    }
    bool isSymmetric(TreeNode* root) {
        if(root==nullptr) return true;                         //空树也是镜像二叉树
        return traversal(root->left, root->right);
    }
};

以上代码来自代码随想录