#include<bits/stdc++.h>
using namespace std;
// Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
class Solution {
public:
bool check(TreeNode* p,TreeNode* q) {
if(!p && !q)
{
return true;
}
else if(!p || !q)
{
return false;
}
return (p -> val == q -> val) && check(p -> left,q -> right) && check(p -> right, q -> left);
}
bool queueCheck(TreeNode* u,TreeNode* v) {
queue<TreeNode*> q;
q.push(u);
q.push(v);
while(!q.empty())
{
TreeNode* l = q.front();
q.pop();
TreeNode* r = q.front();
q.pop();
if(!l && !r)
{
continue;
}
else if((!l || !r) || l -> val != r -> val)
{
return false;
}
q.push(l -> left);
q.push(r -> right);
q.push(l -> right);
q.push(r -> left);
}
return true;
}
bool isSymmetric(TreeNode* root) {
return queueCheck(root,root);
}
};
力扣101
最新推荐文章于 2023-04-17 20:15:56 发布