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

四、递归展开图

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

相关推荐
Jasmine_llq6 小时前
《P5663 [CSP-J 2019] 加工零件》
数据结构·算法·bfs·广度优先搜索·分层 bfs /·奇偶分层最短路·奇数最短步数
悠仁さん7 小时前
【C++】auto
java·前端·c++
郝学胜-神的一滴7 小时前
C++ Templates 07:编译报错和调试手段与实战技巧
开发语言·c++·后端·软件工程·visual studio
何老师的GESP C++进阶课堂7 小时前
1、数组知识点总结
c++·青少年编程·gesp c++
jimy17 小时前
c++的静态类型和动态类型(二)
开发语言·c++
stolentime7 小时前
AT_arc182_a [ARC182A] Chmax Rush!题解
数据结构·c++·算法·动态规划
longlongzihan7 小时前
LeetCode 189. 轮转数组:从直观模拟到最优原地算法
c++·算法·leetcode
longlongzihan7 小时前
LeetCode 76. 最小覆盖子串:滑动窗口算法详解
算法·leetcode·滑动窗口
写后端的胖头鱼15 小时前
一文详解B+树原理(附场景+示例)
数据结构·b树
All for pursuit.18 小时前
【位运算-1】338.比特位计数
数据结构·c++·算法·leetcode