二叉树-226.翻转链表-力扣(LeetCode)

一、题目解析

翻转可以理解为树的左右子树交换,从根到叶子节点,但是这里交换的是链接的指针,而不是单纯的交换值,当出现nullptr时,也是可以交换链接的,交换值的话就不行了。

二、算法原理

依旧的递归,但是我们需要更改指针的链接,所以我们需要保存递归时左右指针,用于交换链接。

根据递归顺序,先将左树交换,然后交换右数,最后将根的链接改变,原来的左变为翻转后的右,右边同理。

三、代码示例

cpp 复制代码
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if(root == nullptr) return nullptr;
        TreeNode* left = invertTree(root->left);
        TreeNode* right = invertTree(root->right);
        root->left = right;
        root->right = left;
        return root;
    }
};

四、递归展开图

看到最后,如果对您有所帮助,还请点赞、收藏和关注,点点关注不迷路,我们下期再见!

相关推荐
困意少年18 分钟前
队列:先进先出为什么特别适合“流程推进”这类问题
数据结构
2501_921960851 小时前
协同本体论 V4.2+:离散关系拓扑涌现连续时空几何的数值验证
数据结构·人工智能·重构
WiChP1 小时前
【V0.1B9】从零开始的2D游戏引擎开发之路
c++·游戏引擎
Peter·Pan爱编程2 小时前
从 struct 到 class:封装与访问控制的真正意义
c++
橙淮2 小时前
Java数组与链表:特性对比与应用场景
数据结构·算法
Hical612 小时前
C++26 反射落地实战
c++·开源
计算机安禾2 小时前
【c++面向对象编程】第22篇:输入输出运算符重载:<< 与 >> 的友元实现
java·前端·c++
北山有鸟2 小时前
解决香橙派没有适配ov13855的3A算法
linux·c++·相机·isp
故事和你913 小时前
洛谷-【图论2-1】树4
开发语言·数据结构·c++·算法·动态规划·图论
故事和你913 小时前
洛谷-【图论2-1】树1
开发语言·数据结构·c++·算法·深度优先·动态规划·图论