给你一棵二叉树的根节点 root
,翻转这棵二叉树,并返回其根节点。
void exchange(struct TreeNode** pleft,struct TreeNode** pright)
{
struct TreeNode* tmp = *pleft;
*pleft = *pright;
*pright = tmp;
}
struct TreeNode* invertTree(struct TreeNode* root){
if (root == NULL)
{
return root;
}
if (root->right == NULL && root->left == NULL)
{
return root;
}
if (root->right && root->left)
{
exchange(&root->right , &root->left);
invertTree(root->left);
invertTree(root->right);
return root;
}
if (root->left == NULL && root->right)
{
root->left = root->right;
root->right = NULL;
invertTree(root->left);
return root;
}
if (root->right == NULL && root->left)
{
root->right = root->left;
root->left = NULL;
invertTree(root->right);
//return root;
}
return root;
}