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

四、递归展开图

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

相关推荐
yxc_inspire21 分钟前
基于Qt的app开发第十四天
前端·c++·qt·app·面向对象·qss
蒟蒻小袁31 分钟前
力扣面试150题--实现Trie(前缀树)
leetcode·面试·c#
大白曾是少年42 分钟前
哈希表三种数据结构在leetcode中的使用情况分析
数据结构·leetcode·散列表
Cai junhao1 小时前
【Qt】工具介绍和信号与槽机制
开发语言·c++·qt·qt6.3
byte轻骑兵10 小时前
【C++特殊工具与技术】优化内存分配(四):定位new表达式、类特定的new、delete表达式
开发语言·c++
TGB-Earnest10 小时前
【leetcode-合并两个有序链表】
javascript·leetcode·链表
GEEK零零七10 小时前
Leetcode 3299. 连续子序列的和
算法·leetcode·动态规划
广州正荣10 小时前
成绩管理革新者:C++驱动的智能数据处理平台
c++·人工智能·科技
蒟蒻小袁11 小时前
力扣面试150题--单词接龙
算法·leetcode·面试
90wunch11 小时前
对象回调初步研究
c++·windows·安全