每日力扣-树-对称二叉树

91 阅读1分钟

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

解题思路:同时比较两个节点,如果1.两个节点都为空,返回true。2.两个节点其中一个空,返回false。3.都不空,但是数值不一样,返回false。4.都不空,数值相同,继续判断。

判断1.左节点的left,右节点的right。2.左节点的right,右节点的left。

class Solution {
public:
    vector<int> dfsleft;
    vector<int> dfsright;
    bool isSymmetric(TreeNode* root) 
    {
        if(root == nullptr) return true;
        return compare(root->left,root->right);
    }
    bool compare(TreeNode* leftnode, TreeNode* rightnode)
    {
        if(leftnode == nullptr && rightnode == nullptr) return true;
        else if(leftnode != nullptr && rightnode == nullptr) return false;
        else if(leftnode == nullptr && rightnode != nullptr) return false;
        else if(leftnode -> val != rightnode -> val) return false;

        bool outside = compare(leftnode->left,rightnode->right);
        bool inside = compare(leftnode->right,rightnode->left);
        bool issame = outside && inside;
        return issame;
    }
};