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;
}
};