解法一:个人思路
struct TreeNode* swop(struct TreeNode* root)
{
struct TreeNode* tmp = root -> left;
root -> left = root -> right;
root -> right = tmp;
return root;
}
struct TreeNode* invertTree(struct TreeNode* root) {
if(root)
{
invertTree(root -> left);
invertTree(root -> right);
return swop(root);
}
else
return NULL;
}
我的思路是将二叉树遍历到最后 进行左右子节点的交换 最后将节点的值返回
解法二:官方题解
struct TreeNode* invertTree(struct TreeNode* root) {
if(!root)
return NULL;
struct TreeNode* left = invertTree(root -> left);
struct TreeNode* right = invertTree(root -> right);
root -> right = left;
root -> left = right;
return root;
}
官方给的题解更精炼 将节点作为返回值 返回后再进行交换