剑指offer 面试题28:对称的二叉树 c++

题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。(要想象一下他的结构)

思路:递归判断,左子树的左子树和右子树的右子树比较,左子树的右子树和右子树的左子树比较,若相等则是,否则不是。

class Solution {
public:
    bool isSym(TreeNode* left,TreeNode *right)
    {
        if(right==nullptr && left==nullptr) return true;
        if(right==nullptr || left==nullptr) return false;
        return isSym(left->left,right->right) &&isSym(left->right,right->left)
            && (left->val == right->val);
    }
    bool isSymmetrical(TreeNode* pRoot)
    {
        if (pRoot==nullptr) return true;
        return isSym(pRoot->left,pRoot->right);
    }

};

猜你喜欢

转载自blog.csdn.net/qq_21997625/article/details/84256053