题目描述:请完成一个函数,输入一个二叉树,该函数输出它的镜像。
分析:
完整代码:
/*
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 == nullptr) || (pRoot->left == nullptr && pRoot->right == nullptr))
return;
/*******交换当前根节点的左右节点*******/
TreeNode* pTemp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = pTemp;
//判断是否存在左子树
if(pRoot->left)
//递归调用镜像函数交换左右节点
Mirror(pRoot->left);
//判断是否存在右子树
if(pRoot->right)
//递归调用镜像函数交换左右节点
Mirror(pRoot->right);
}
};