[二叉树]leetcode101:对称二叉树(easy)

题目:
[二叉树]leetcode101:对称二叉树(easy)
题解1:递归法

class Solution {
public:
    /*解法1:递归法*/
    bool isSymmetric(TreeNode* root){
        if(root==nullptr)return true;
        return ismirror(root->right,root->left);
    }
    bool ismirror(TreeNode* p,TreeNode* q){
        if(!p&&!q)//都为NULL
            return true;
        if(!p||!q)//有一个为NULL
            return false;
        if(p->val==q->val)
            return ismirror(p->left,q->right)&&ismirror(p->right,q->left);
        return false;
    }
};

题解2:利用层序遍历迭代法解题

class Solution {
public:
	//解法2:迭代法,利用层序遍历比较左右子树的节点
   	bool isSymmetric(TreeNode* root){
        if(root==nullptr)return true;
        queue<TreeNode*> q;
        q.push(root->left);
        q.push(root->right);
    
        while(!q.empty())
        {
            TreeNode *left=q.front();q.pop();
            TreeNode *right=q.front();q.pop();
            if(left==nullptr&&right==nullptr)//左右节点皆为空
                continue;
            if(left==nullptr||right==nullptr)//左右节点有一个为空
                return false;
            if(left->val!=right->val)return false;//节点值不等
            q.push(left->left);
            q.push(right->right);
            q.push(right->left);
            q.push(left->right);
          
        }
        return true;
    }
};
上一篇:leetcode101_Symmetric Tree


下一篇:Android程序的隐藏与退出