第一种,从上面开始反转
struct TreeNode* invertTree(struct TreeNode* root){
if(root==NULL){
return NULL;
}else{
struct TreeNode* p;
p=root->left;
root->left=root->right; //直接交换根的两个孩子
root->right=p;
invertTree(root->left); //通过递归交换孩子的孩子
invertTree(root->right);
return root;
}
}
第二种从最后开始反转
struct TreeNode* invertTree(struct TreeNode* root){
if(root==NULL){
return NULL;
}else{
struct TreeNode* left=invertTree(root->left);
struct TreeNode* right=invertTree(root->right); //递归到最后一层,开始交换
root->left=right; //从最后一层树开始交换,得到左右两个数叶
root->right=left; //通过赋值交换两个的位置
return root;
}
}