38.交换二叉树中所有的左右节点

1.递归图解

一定要想着base case,也就是最基础的额情况,如右图,可以看到root->left =left = null,root->right = right = null,然后交换两个null的位置,返回中间这张图片,左下角的方框内就是刚刚做的操作也就是已经交换过了,当前处理的是中间图片的最上面的一个节点,left已经带回来了,处理完了,接下来处理 right = fun(root->right),又回到了右下角的basecase,同最右边的图片,递归着实很难理解,赛博鬼打墙了属于是,总结一句话,一定不要陷入细节中去,你的脑子是装不下那么多层的递归的,一定要从basecase出发,然后找到递归出口

2.代码

cpp 复制代码
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if(root==NULL){
            return NULL ;
        }
       TreeNode* left = invertTree(root->left);
       TreeNode* right = invertTree(root->right);
        root->left = right;
        root->right = left;
        return root;
    }
};
相关推荐
南境十里·墨染春水3 小时前
C++ 工厂模式:从入门到进阶,彻底掌握对象创建的艺术
开发语言·c++·算法
yuanyxh3 小时前
Mac 软件推荐
前端·javascript·程序员
万少3 小时前
AtomCode开发微信小程序《谁去呀》 全流程
前端·javascript·后端
某人辛木4 小时前
Web自动化测试
前端·python·pycharm·pytest
Kagol4 小时前
Superpowers GSD gstack AgentSkills深度测评
前端·人工智能
JosieBook5 小时前
【数据库】时序预测能力的分级进化:TimechoAI如何让每一类用户都能精准预见未来
java·开发语言·数据库
加号35 小时前
【C#】 文件与目录管理:创建、删除操作的技术解析
开发语言·c#
excel5 小时前
JavaScript 字符串与模板字面量:从表象到本质理解
前端
diving deep5 小时前
脚本速览-python
开发语言·python
京东云开发者6 小时前
当AI成为导演-如何用AI创作动漫短剧
前端