LeetCode刷题记录.Day33

对称二叉树

迭代法

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if(root == NULL) return true;
         
        queue<TreeNode*> que;
        que.push(root->left);   // 将左子树头结点加入队列
        que.push(root->right);  // 将右子树头结点加入队列
        while(!que.empty()){
            TreeNode* leftNode = que.front(); que.pop(); //左节点出队
            TreeNode* rightNode = que.front(); que.pop(); //右节点出队
            if (!leftNode && !rightNode) {  // 左节点为空、右节点为空,此时说明是对称的
                continue;
            }
            // 左右一个节点不为空,或者都不为空但数值不相同,返回false
            if ((!leftNode || !rightNode || (leftNode->val != rightNode->val))) {
                return false;
            }

            que.push(leftNode->left);   // 将左子结点加入队列
            que.push(rightNode->right);   // 将右子结点加入队列
            que.push(leftNode->right);   // 将左子结点加入队列
            que.push(rightNode->left);   // 将右子结点加入队列

        }
        return true;
    }
};

 

复习二叉树的用法

posted @ 2022-12-17 21:08  凱風快晴  阅读(18)  评论(0)    收藏  举报