对称二叉树判断(迭代)

题目: 代码:

/**
 * 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) {
          
   
        if(root==NULL)
            return true;
        queue<TreeNode*> left_queue;
        left_queue.push(root->left);
        queue<TreeNode*> right_queue;
        right_queue.push(root->right);
        while(!left_queue.empty()&&!right_queue.empty())
        {
          
   
            TreeNode* cur_left = left_queue.front();
            TreeNode* cur_right = right_queue.front();
            left_queue.pop();
            right_queue.pop();
            if(cur_left == NULL||cur_right == NULL)
            {
          
   
                if(cur_left == NULL&&cur_right == NULL)
                    continue;
                return false;
            }
            if(cur_left->val!=cur_right->val)
            {
          
   
                return false;
            }
            left_queue.push(cur_left->right);
            left_queue.push(cur_left->left);
            right_queue.push(cur_right->left);
            right_queue.push(cur_right->right);
        }
        return true;
    }
};
经验分享 程序员 微信小程序 职场和发展