101. 对称二叉树

发布时间 2023-04-04 17:27:38作者: xiazichengxi

给你一个二叉树的根节点 root , 检查它是否轴对称。

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
    //使用队列来判断左右子树的内外侧
    if(root == nullptr) return true;
    TreeNode* l = root->left, *r = root->right;
    que.push(l);
    que.push(r);
    while(!que.empty())
    {
        l = que.front();
        que.pop();
        r = que.front();
        que.pop();
        if (!l && !r) continue;
        if ((!l || !r || (l->val != r->val))) return false;
        que.push(l->left); que.push(r->right);
        que.push(l->right); que.push(r->left);
    }
    return true;
    }
private:
    queue<TreeNode*> que;
};
class Solution {
public:
    bool is_symmetric(TreeNode* left,TreeNode* right)
    {
        if(left==nullptr&&right==nullptr) return true;
        if(left && right==nullptr) return false;
        if(right && left==nullptr) return false;
        if(right->val != left->val) return false;
        bool l_judge = is_symmetric(left->left,right->right);
        bool r_judge = is_symmetric(left->right,right->left);
        return l_judge&r_judge;
    }
    bool isSymmetric(TreeNode* root) {
        if(root==nullptr) return false;
        bool judge = is_symmetric(root->left,root->right);
        return judge;
    }
};