实现如下目标:
(题目来源:力扣)
利用前序遍历
struct TreeNode* invertTree(struct TreeNode* root){
if(root==NULL)
return NULL;// 先序遍历--从顶向下交换
struct TreeNode* leftnode=root->left;// 保存左子树
root->left=invertTree(root->right);
root->right=invertTree(leftnode);// 交换左右子树的位置
return root;
}
利用中序遍历
struct TreeNode* invertTree(struct TreeNode* root){
if(root==NULL)
return NULL;
invertTree(root->right);// 递归找到右节点
struct TreeNode* leftnode=root->left;// 保存左子树
root->left=root->right;
root->right=leftnode;
//递归找到左节点 继续交换 : 因为此时左右节点已经交换了,所以此时的左节点为root->right.
invertTree(root->right);
return root;
}
利用后序遍历
struct TreeNode* invertTree(struct TreeNode* root){
// 后序遍历-- 从下向上交换
if(root==NULL)
return NULL;
struct TreeNode* leftnode=invertTree(root->left);
struct TreeNode* rightnode=invertTree(root->right);
root->left=rightnode;
root->right=leftnode;
return root;
}