【LeetCode】剑指 Offer(10)

news2024/12/29 0:46:26

目录

题目:剑指 Offer 27. 二叉树的镜像 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

题目:剑指 Offer 28. 对称的二叉树 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


 

题目:剑指 Offer 27. 二叉树的镜像 - 力扣(Leetcode)

b7efd642a1ae4a8081290780c19c0d94.png

题目的接口:

/**
 * 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:
    TreeNode* mirrorTree(TreeNode* root) {

    }
};

解题思路:

递归遍历二叉树每个节点的左右孩子,

然后自下而上依次交换左右孩子。

如果到空就返回。

代码:

/**
 * 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:
    TreeNode* mirrorTree(TreeNode* root) {
   //遇到空返回
    if(root == nullptr)
    {
        return nullptr;
    }

    //找左孩子
    TreeNode* left = mirrorTree(root->left);

    //找右孩子
    TreeNode* right = mirrorTree(root->right);

    //交换左右孩子
    root->left = right;
    root->right = left;

    //返回交换后的根节点
    return root;
    }
};

过啦!!!

89d8a9a3b3f047068ec82154e623b0f4.png

题目:剑指 Offer 28. 对称的二叉树 - 力扣(Leetcode)

fe7860fa9d454c55a4056b9e2dc666bb.png

题目的接口:

/**
 * 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) {

    }
};

解题思路:

递归遍历二叉树,

如果二叉树为空,返回true,

我一开始是返回false,然后测试的时候,

测试用例返回的是true,

我就根据题意写代码了。

注意一下空指针的访问问题,

想个办法判断一下,

再比较是否镜像对称即可。

代码:

/**
 * 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 is_Symmetric(TreeNode* left, TreeNode* right)
    {
        //如果左右孩子都为空,证明递归完了,返回true
        if(left == nullptr && right == nullptr)
        {
            return true;
        }

        //如果孩子其中有一个为空,返回false(如果不提前判断,之后比较时会错误使用空指针)
        if(!left || !right)
        {
            return false;
        }

        //比较是否镜像对称
        if(left->val != right->val)
        {
            return false;
        }

        //递归搜索
        return is_Symmetric(left->left, right->right) && is_Symmetric(right->left, left->right);
    }
    
    bool isSymmetric(TreeNode* root) {
        //如果是空树,也是对称(测试用例告诉我的)
        if(root == nullptr)
        {
            return true;
        }

        //递归搜索左右孩子
        return is_Symmetric(root->left, root->right);
    }
};

过啦!!!

8f501509b1cd4b27ba6b8aed091ac7ea.png

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【人脸识别】FROM:提升遮挡状态下的人脸识别效果

论文题目:《End2End Occluded Face Recognition by Masking Corrupted Features》 论文地址:https://arxiv.org/pdf/2108.09468v3.pdf 代码地址:https://github.com/haibo-qiu/from 1.前言 人脸识别技术已经取得了显著的进展,主要…

几个开源 RUST 安全算法库

这段时间把 RUST 语法过了一遍,写一些简单的 Demo 程序没啥问题了,但离掌握这门语言还差的远,需要项目实战才行。我决定从之前研究过的国密算法入手,使用 RUST 实现国密算法。从头编写算法不太现实,上网搜了一下&#…

pandas数据分析36——快速独热和反独热处理

做数据预处理的时候,很多文本分类变量需要变为数值型。 下面提供一些方法,就以最经典的泰但尼克号数据集作为例子。 先导包读取数据 import numpy as np import pandas as pd datapd.read_csv(train.csv) datadata.drop(columns[Name,Ticket,Cabin],…

jmeter报错: java.io.EOFException: Unexpected end of ZLIB input stream

一、背景: 1.1 报错信息 java.io.EOFException: Unexpected end of ZLIB input stream at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:240) at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158) at java.util.zip…

分割线-----

各位好,之前的文章就不再回复和更新了,都是大学的时候随便玩玩的。真的不能算学术研究。致敬过去的自己。努力真的可以幸福!虽然还是一样在搬砖!

Allegro如何快速锁定整板测试点操作指导

Allegro如何快速锁定整板测试点操作指导 在做PCB设计的时候,会需要给整板添加测试点,用于飞针测试,如下图 在测试点添加好之后,文件输出之前需要把测试点全部锁定,避免因为测试点模具开好,测试点被移动的情况出现 如果逐个锁定Via,容易遗漏 Allegro支持快速锁定整板测…

计算机网络高频知识点(一)

目录 一、http状态码 二、浏览器怎么数据缓存 三、强缓存与协商缓存 1、强缓存 2、协商缓存 四、简单请求与复杂请求 五、PUT 请求类型 六、GET请求类型 七、GET 和 POST 的区别 八、跨域 1、什么时候会跨域 2、解决方式 九、计算机网络的七层协议与五层协议分别指…

华纬科技冲刺A股上市:毛利率下降幅度较大,金雷为实控人

近日,华纬科技股份有限公司(下称“华纬科技”)递交招股书,准备在深圳证券交易所主板上市。本次冲刺上市,华纬科技计划募资4.34亿元,将用于新增年产8000万只各类高性能弹簧及表面处理技改项目、高精度新能源…

经验之谈——指标异常了怎么办?

本文参考了数据万花筒的文章,结合我自己工作经验。希望给大家一些帮助。 指标异常排查,是数据分析师的工作重点之一,是各行各业数据分析师都绕不开的话题。 本文试图回答: 1、指标波动的影响因素有哪些? 2、如何快速…

Verilog 数据类型和数组简介

在这篇文章将讨论 verilog 中最常用的数据类型,包括对数据表示,线网类型、变量类型,向量类型和数组的讨论。尽管 verilog 被认为是一种弱类型语言(loosely typed),但设计者仍必须在 Verilog 设计中为每个端…

处理器管理

处理器状态处理器管理是操作系统中重要组成部分,负责管理、调度和分配计算机系统的重要资源——处理器,并控制程序执行由于处理器管理是操作系统最核心的部分,无论是应用程序还是系统程序,最终都要在处理器上执行以实现其功能&…

5.OCR文本识别CRNN算法

文章目录1.基础介绍2.CRNN模型结构2.1 特征提取2.2 双向循环神经网络层2.3 转录层(Transcription Layers)参考资料欢迎访问个人网络日志🌹🌹知行空间🌹🌹 title: 2.OCR文本识别Convolution Recurrent Neural Network toc: true ca…

记一次冲突的产生与解决

冲突的概念 git在使用中,如果遵循了它的使用的步骤,比如,在上班之前先去拉取,下班的时候,先提交,如果遵循这个步骤,一般在用的时候没有错误会产生的,但是,因为在开发的时…

Unity 之 实现读取代码写进Word文档功能实现 -- 软著脚本生成工具

Unity 之 实现读取代码写进Word文档功能前言一,实现步骤1.1 逻辑梳理1.2 用到工具二,实现读写文件2.1 读取目录相关2.2 读写文件三,编辑器拓展3.1 编辑器拓展介绍3.2 实现界面可视化四,源码分享4.1 工具目录4.2 完整代码前言 之所…

【SPSS】两独立样本T检验分析详细操作教程(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

消除“马路黑洞”,计讯物联智能井盖综合管理系统平台有绝招

窨井盖作为市政公用设施的重要组成部分,一旦出现松动、损坏等问题时,不仅会影响市容市貌,还会给道路上的车辆、行人带来安全隐患,对社会安定与安全造成极大负面影响。 痛点分析 01 由于地下管线错综复杂、窨井盖分布广泛,加之信…

Linux 进程:父子进程

目录一、了解子进程二、创建子进程1.创建子进程2.区分父子进程三、理解子进程四、创建子进程的意义进程就是运行中的应用程序,如果一个程序较为庞大,我们可以给这个程序创建多个进程,每个进程负责一部分代码的运行。 A进程如果创建了B进程&am…

【华为OD机试模拟题】用 C++ 实现 - GPU 调度(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明GPU 调度题目输入输出示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。

动态规划:完全背包基础、518.零钱兑换II、377.组合总和IV

leetcode 518.零钱兑换IIleetcode 377.组合总和IV完全背包基础有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里…

CleanMyMac4.20最新版新增功能及电脑清理垃圾使用教程

CleanMyMac4.20作为知名的Mac清理工具,仅需一键即可快速而安全地清理系统垃圾,释放磁盘空间,因此一直深受Mac用户的喜爱。在不断更新的版本中,CleanMyMac已经不仅仅满足于只做简单的Mac清理工具,而是为Mac用户提供更多…