剑指offer-----18、二叉树的镜像
1、题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。如下图:

2、分析
首先传入一个树,如果树为空或者这个树的左右节点都为空,那么也就不存在所谓的镜像,直接返回。如果不是上述的特殊情况,那么使用一个中间变量,交换左右指针的值。然后递归对左子树和右子树进行同样的操作。这时需要判断,只有当它们不为空时才进行操作。
3、代码
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
void Mirror(TreeNode *pRoot) {
if((!pRoot)||((!pRoot->left)&&(!pRoot->right))) return ;
TreeNode *temp=pRoot->left;
pRoot->left=pRoot->right;
pRoot->right=temp;
if(pRoot->left!=NULL)
Mirror(pRoot->left);
if(pRoot->right!=NULL)
Mirror(pRoot->right);
}
};
4、相关知识点
树的遍历,树的常规操作。

浙公网安备 33010602011771号