二叉树-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;
    }
};

四、递归展开图

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

相关推荐
std787915 分钟前
用C++ 实现屏幕保护程序
开发语言·c++
tumu_C20 分钟前
无用知识研究:在trailing return type利用decltype,comma operator在对函数进行sfinae原创 [二]
开发语言·c++·算法
红糖生姜38 分钟前
P12874 [蓝桥杯 2025 国 Python A] 巡逻||题解||图论
c++·蓝桥杯·图论
QuantumLeap丶1 小时前
【数据结构:从0-1】-01-数据结构介绍及学习路线规划
数据结构
云泽8081 小时前
C/C++内存管理详解:从基础原理到自定义内存池原理
java·c语言·c++
Code小翊2 小时前
堆的基础操作,C语言示例
java·数据结构·算法
Emilia486.2 小时前
【Leetcode&nowcode&数据结构】顺序表的应用
数据结构·算法·leetcode
小年糕是糕手2 小时前
【数据结构】双向链表“0”基础知识讲解 + 实战演练
c语言·开发语言·数据结构·c++·学习·算法·链表
将车2442 小时前
C++实现二叉树搜索树
开发语言·数据结构·c++·笔记·学习
NiKo_W2 小时前
Linux 线程控制
linux·数据结构·内核·线程·进程·线程控制