(BFS 简单) Leetcode 101. 对称二叉树

在这里插入图片描述

我把这棵树分成左右部分来存储,进队的时候左右相反;

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        queue<TreeNode*>quel;
        queue<TreeNode*>quer;
        if(root==nullptr)return true;
        if(root->left==nullptr&&root->right==nullptr)return true;
        quel.push(root->left);
        quer.push(root->right);
        while(!quel.empty()|| !quer.empty())
        {
            TreeNode* le=quel.front();
            quel.pop();
            TreeNode* ri=quer.front();
            quer.pop();
            
            if(le==nullptr&&ri==nullptr)
                continue;
            if(le==nullptr||ri==nullptr)
                return false;
            if(le->val!=ri->val)
                return false;
            quel.push(le->left);
            quel.push(le->right);
            quer.push(ri->right);
            quer.push(ri->left);
            
        }
        return true;
    }
};
发布了741 篇原创文章 · 获赞 185 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/Fire_to_cheat_/article/details/103517660