【LeetCode热题100】101. 对称二叉树(二叉树)

一.题目要求

给你一个二叉树的根节点 root , 检查它是否轴对称。

二.题目难度

简单

三.输入样例

示例 1:
在这里插入图片描述
输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:
在这里插入图片描述
输入:root = [1,2,2,null,3,null,3]
输出:false

提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100

进阶:你可以运用递归和迭代两种方法解决这个问题吗?

四.解题思路

递归或者迭代,递归没写出来qaq

五.代码实现

迭代

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if(!root) return false;
        int remained;
        queue<TreeNode*> q;
        vector<int> val;
        q.push(root);
        while(!q.empty())
        {
            remained = q.size();
            while(remained > 0)
            {
                TreeNode* tmp = q.front();
                q.pop();
                remained--;
                if(tmp->left != nullptr) 
                {
                    q.push(tmp->left);
                    val.push_back(tmp->left->val);
                }
                else 
                {
                    val.push_back(999);               
                }
                if(tmp->right) 
                {
                    q.push(tmp->right);
                    val.push_back(tmp->right->val);
                }
                else 
                {
                    val.push_back(999);               
                }
            }
            auto t = val;
            reverse(val.begin(),val.end());         
            if(val != t) return false;
            vector<int>().swap(val);
        }
        return true;
    }
};

递归

class Solution {
public:
    bool check(TreeNode *p, TreeNode *q) {
        if (!p && !q) return true;
        if (!p || !q) return false;
        return p->val == q->val && check(p->left, q->right) && check(p->right, q->left);
    }

    bool isSymmetric(TreeNode* root) {
        return check(root, root);
    }
};

六.题目总结

递归的子问题没拆出来

相关推荐

  1. leetcode-对称

    2024-03-18 14:14:04       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 14:14:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 14:14:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 14:14:04       82 阅读
  4. Python语言-面向对象

    2024-03-18 14:14:04       91 阅读

热门阅读

  1. Linux 开机启动Springboot程序

    2024-03-18 14:14:04       39 阅读
  2. Redis删除

    2024-03-18 14:14:04       40 阅读
  3. 通信系统架构

    2024-03-18 14:14:04       44 阅读
  4. 【Linux】在 Linux 上使用 Zig 编译 PostgreSQL 源码

    2024-03-18 14:14:04       41 阅读
  5. Linux 环境变量深入解析

    2024-03-18 14:14:04       39 阅读
  6. 自然语言处理概念及发展

    2024-03-18 14:14:04       42 阅读
  7. Spring Boot简析

    2024-03-18 14:14:04       41 阅读