给你一个二叉树的根节点 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;
}
};