226. 翻转二叉树

《基于Yolo算法的火灾检测系统设计与实现》开题报告 在消防安全领域,火灾对生命财产安全构成严重威胁。传统的火灾检测手段存在诸多不足,如误报率高、检测范围有限、响应速度慢等。基于 Yolo 算法的火灾检测系统能够利用深度学习技术,实现对火灾的高效、精准检测,具有重要的现实意义。         从社会安全角度看,该系统可以广泛应用于各类公共场所、工业厂房和居民住宅,实时监测火灾隐患,及时发出警报,为人员疏散和消防救援争取宝贵时间,有效降低火灾造成的人员伤亡和财产损失,保障社会公共安全。 阅读详情

描述

翻转一棵二叉树。
在这里插入图片描述

备注:
这个问题是受到 Max Howell 的 原问题 启发的 :

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

思路

按照《从三道LeetCode例题总结递归套路,解决递归问题》,,将二叉树抽象为只有一个root结点和其左右孩子的树,按步骤分析:

  1. 递归的出口:当root结点为空时,递归结束
  2. 应该返回什么信息:这道题要返回的是被交换过后的子树。
  3. 本级递归需要做什么:需要交换root结点的左右子树。注意:这里不是只交换结点的val值,而是交换root的左右指针指向的结点。放在整个二叉树中看,即将root结点的左右指针的指向调换,root->left指向root->right,root->right指向root->left。这样不光交换了左右子结点,也交换了左右子结点的子树。

解答

/**
 * 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* invertTree(TreeNode* root) {
        if(root == NULL) return NULL;//1.递归出口
        //3.本层递归需要做什么:交换root结点的左右孩子
        TreeNode* tmp = root->left;
        root->left = root->right;
        root->right = tmp;

        invertTree(root->left);
        invertTree(root->right);

        return root;//3.返回什么值
    }
};

相关推荐

UVM对象实例化及覆盖的几种方法

UVM对象实例化的方法有多种,以下以object为例: 1)第一种:直接利用new函数进行实例化 trans t1; t1 = new("t1");//利用new函数进行实例化 2)第二种:uvm_component_registry中提供的方法type_id::create,此种方法也是最常使用的方法 trans t2; t2 = trans::type_id::create("t2",this); 3)第三种:uvm_factory中提供的方法creat_object_by_type trans t

沧月九流的博客 3375

翻转二叉树-python

leetCode第226题 翻转二叉树 链接:https://leetcode-cn.com/problems/invert-binary-tree 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root = [2,1,3] 输出:[2,3,1] 示例 3: 输入:root = [] 输出:[] 提示: 树中节点数目范围在 [0, 100] 内 -10

unseven的博客 2711

SolidWorks+ADAMS双验证:你的机械臂力矩计算真的靠谱吗?

本文探讨了机械臂力矩计算中手工计算的局限性,并介绍了SolidWorks和ADAMS双验证方法的重要性。通过实际案例展示了动态工况下传统计算方法的误差,详细解析了SolidWorks精准质心捕捉和ADAMS动力学仿真的关键技术,帮助工程师构建计算-仿真-实测闭环验证流程,确保机械臂设计的可靠性和安全性。

grafana6viz的博客 228

翻转二叉树

文章目录前言一、翻转二叉树二、打法1.递归法2.读入数据总结 前言 热闹不过是短暂的消耗品,而撑起你人生的是孤独本身 一、翻转二叉树 观察可以发现,如要翻转整个二叉树,就在遍历的过程中去翻转每⼀个节点的左右孩⼦就可以达到整体翻转的效果。 二、打法 1.递归法 1、确定递归函数的参数和返回值 参数就是要传⼊节点的指针,返回值题⽬中给出要返回root节点的指针,所以函数的返回类型为TreeNode*。 2、确定终⽌条件 当前节点为空的时候,就返回 3、确定单层递归的逻辑 因为是先做前序遍历,所以先进⾏交换左

weixin_46269257的博客 379

20231126-超详细Isaac Gym安装教程(基于双系统版本)

我一开始使用了WSL2虚拟环境试了集群服务器里面的交互式桌面,但是都失败了,WSL2因为没办法调用系统的GPU,应该有办法配置但我放弃了,感兴趣的可以自己探索(图片贴出来了)。服务器上出现的问题是Segmentation fault (core dumped),目前还没解决,有可能是驱动和cuda版本的问题(后面有时间再解决)等上图右边都达到了100%,就创建了一个名为rlgpu的conda环境,然后会出现success。注意安装版本要低于3.9!参考链接:非常详细,大家直接看这个博主的安装就行。

m0_37802038的博客 2万+

LilyPad三色LED共阳极控制:从原理到Arduino编程实战

RGB LED作为可编程光源的核心组件,通过红、绿、蓝三原色的加色混合原理,能够生成丰富的色彩。其内部结构主要分为共阳极和共阴极两种类型,这决定了驱动电路的设计和编程逻辑。在电子织物和可穿戴设备领域,掌握RGB LED的控制技术对于实现动态光效和交互反馈至关重要。本文以LilyPad三色LED为例,深入解析其共阳极特性,并详细演示如何结合Arduino进行PWM编程,从而精准控制颜色与亮度,为智能服装、互动艺术装置等项目提供可靠的照明解决方案。

weixin_30237719的博客 603

【数据结构】翻转二叉树的三种方式

什么是反转二叉树 反转二叉树的实现方式 方式一:使用栈实现 方式二:使用堆实现 方式三:使用递归来实现

✈ 正在努力 の 寒江(StudiousTiger) ✌ 呐 ✈ 5273

UNet改进(47):Deformable Convolution在UNet中的集成与应用

本文提出了一种可变形U-Net(DeformableUNet)结构,通过在U-Net的双卷积模块中集成可变形卷积(DeformConv2d)来提升模型对物体形变和复杂结构的建模能力。传统卷积受限于固定感受野,而可变形卷积通过动态调整采样位置,能更好地适应不规则形状。实现中,在DoubleConv模块的第二个卷积层替换为可变形卷积,同时保持第一层为标准卷积以确保稳定性。实验表明,该方法在保持参数量基本不变的情况下,显著提升了分割精度(mIoU从0.712提升到0.743)。

2501_91516851的博客 201

二叉树的翻转

目录 一、题目 二、解题思路 1、二叉树翻转 2、具体步骤(迭代法) 三、代码实现 一、题目 1、leetcode链接:力扣 2、题目内容: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 二、解题思路 1、二叉树翻转 (1)就是将根节点和所有子节点的左右子树进行交换; (2)根节点:树的最顶端的节点,每颗树只有一个根节点; (..

weixin_50616848的博客 4947

1篇1章3节:R 语言的产生与发展轨迹(更新2024/08/14)

药物的研究阶段包括靶标确定、生物学模型建立、新化学实体的发现和优化新化学实体四个关键环节。每个环节都在药物研发过程中发挥着至关重要的作用。通过科学严谨的方法和技术手段,研究人员能够在药物研发过程中不断探索和优化,从而发现和开发出具有高效、安全性的候选药物,为疾病治疗提供更多的选择和希望。

MD Code 2661

c++篇 cad.arx Win10环境配置vs2019+arx2021多版本配置+vs2022 配置图

msvc v141 v140这个两个好像是编译vs2015 vs2017版本的,必须装,然后v142装最新的,剩下的有些是默认的,还有就是mfc这些恐怕要装,然后是v140v141这两个版本的windows sdk是8.1,需要单独装一下。Windows SDK version 8.1 下载地址。windows sdk是10.0.19041.0。先安装vs2019,如图。

我的博客 781

LeetCode 226 翻转二叉树

LeetCode 226 翻转二叉树 题目链接 翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 简单 BFS,从根结点往下,依次交换左右儿子即可,AC代码如下: class Solution { public: TreeNode* invertTree(TreeNode* root) { queue

旺崽的博客 2656

Playwright MCP:开启浏览器自动化的新篇章

在当今数字化时代,浏览器自动化技术在众多领域发挥着至关重要的作用,从简单的网页爬取到复杂的自动化测试,再到智能代理与网页的交互等场景,都离不开高效、可靠的浏览器自动化工具。而微软推出的项目,正是在这一领域的一次创新性探索,它为开发者带来了全新的视角和强大的功能支持。本文将深入探讨的概念、架构、代码示例、应用场景、注意事项以及未来发展方向,帮助读者全面了解这一前沿技术。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 5263

Leetcode 226. 翻转二叉树

Leetcode 226. 翻转二叉树1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/invert-binary-tree/   本质上就是一个二叉树的遍历问题。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace std; #include "a

珍惜 9064

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode 226. 翻转二叉树

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 226. 翻转二叉树,做好准备了么,那么开始吧。 🌲🌲🐴🐴

weixin_62275996的博客 167

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode第226题_翻转二叉树

LeetCode第226题要求翻转一棵二叉树,即将每个节点的左右子树交换位置。题目提供了递归和迭代两种解法。递归方法通过先翻转左右子树,再交换当前节点的左右子树来实现,时间复杂度为O(n),空间复杂度为O(h),其中h为树的高度。迭代方法使用队列进行层序遍历,依次交换每个节点的左右子树,时间复杂度同样为O(n),空间复杂度为O(n)。代码实现提供了C#、Python和C++三种语言的版本,分别展示了递归和迭代的具体实现。

qq_40263592的博客 1279

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode 226翻转二叉树

LeetCode 226翻转二叉树 题目简述:翻转一棵二叉树。 输入:[4, 2, 7, 1, 3, 6, 9] 输出:[4, 7, 2, 9, 6, 3, 1] 思路:递归遍历整棵二叉树,遍历到每个节点时交换左右儿子。时间复杂度O(n) class Solution { public: TreeNode* invertTree(TreeNode* root) { if(!root) return 0; swap(root->left, root-&

XBlog 172

力扣226 翻转二叉树

即左右进行交换再递归 /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ struct TreeNode* invertTree(struct Tre...

qq_40519283的博客 357

leetcode 226. 翻转二叉树

leetcode 226. 翻转二叉树 题目详情 题目链接 翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 备注: 这个问题是受到 Max Howell 的 原问题 启发的 : 谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。 我的代码 /** * Definition for

qq_33789406的博客 106

Leetcode226. 翻转二叉树

Leetcode226. 翻转二叉树 题目; 翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 题解: 迭代、递归 scala代码如下: /** * 迭代 * * @param roo...

会流泪de鱼的博客 228

二叉树OJ题:LeetCode--226.翻转二叉树

LeetCode--226.翻转二叉树:使用C语言递归实现的详细解题思路,你也快来试试吧!

Yikefore的博客 772

Leetcode226. 翻转二叉树(C语言)

Leetcode226. 翻转二叉树(C语言) 数据结构-树:算法与数据结构参考 题目: 翻转一棵二叉树。例: 输入:[4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 思路: 递归 代码: /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct T...

jeanlu的博客 829

【LeetCode226】翻转二叉树

假设你有一个大盒子,里面装着一个小盒子,小盒子里又装着更小的盒子……一直到最小的盒子里什么都没有。每个盒子的结构都和大盒子一样,只不过尺寸变小了。解决问题的时候,你可以先解决最小盒子的问题,再一层一层往外解决,这就是递归的做法。递归就是类似这种“在里面还藏着同样的东西”的思想。(同样的东西,或许是同样的函数映射)简单来说,递归思想就是把一个大问题拆成和原问题很像但更小的问题,一直拆到最简单的时候再一步步合起来解决。这样的方法就叫做递归。形成递归解决方案/形成递归结构的通用模式。

Pyroyster的博客 410

leetcode226翻转二叉树的衍生问题

学习安排根据《代码随想录》leetcode226 因为是一道简单题,就没必要展示完整代码了,今天就是想总结一下自己在这道简单题后面挖掘的一些东西,仅为个人的一种记录习惯~如果有和我一样基础薄弱的新手能够看到且对你们有帮助的话就更好了~ 首先,leetcode 给的函数外壳 是直接返回一个 指针类型,如下: 即:通过根节点找到 翻转后的二叉树 因为涉及到 二叉树题目,返回值 除了 vector<>,嵌套 vector<>之外还没写到过这种返回类型,因此,用什么方式.

qq_57328462的博客 231

LeetCode226.翻转二叉树

LeetCode226.翻转二叉树

Love Peace 131
上一篇: 24. 两两交换链表中的节点
下一篇: 617. 合并二叉树
MegaBytes
博客等级 码龄8年 45粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值