细节一:递归采用前序递归
细节二:采用交换节点而不是交换数据因为左右树交换的同时左右树的所有子节点都要交换
细节三:采用外置函数因为return如果在本函数内操作会存在必须返回空指针的问题
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
void swap(struct TreeNode* root)
{
if(root==NULL)
{
return ;
}
struct TreeNode* d=root->left;
root->left=root->right;
root->right=d;
swap(root->left);
swap(root->right);
}
struct TreeNode* invertTree(struct TreeNode* root) {
swap(root);
return root;
}