题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
思路
要解决这个问题,首先要明白镜像的定义。
镜像即根结点不变,左右子树交换,那左右子树的子树呢?也依此交换下去——很明显的递归。
既然是递归就要考虑递归何时返回? 到空为止。
实现
class Solution {
public:
void Mirror(TreeNode *pRoot) {
if (!pRoot) return;//控制递归返回,注意此函数返回是void,这里的return只是为了让函数结束
TreeNode* p=pRoot->left;//申请临时变量保存
pRoot->left=pRoot->right;//交换左右子树
pRoot->right=p;
Mirror(pRoot->left);//左子树递归镜像
Mirror(pRoot->right);//右子树递归镜像
return;
}
};