面试题:19二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出他的镜像。
二叉树的结点定义如下:
struct BinaryTreeNode
{
int value;
BinaryTreeNode* Left;
BinaryTreeNode* Right;
};
分析:所谓二叉树的镜像就是非叶结点的左右子树交换,但注意边界情况:输入的树为空。
void MirrorRecursively(BinaryTreeNode *pNode)
{
if(pNode == NULL)
{
return ;
}
if(pNode->Left ==NULL && pNode->Right == NULL)
{
return ;
}
BinaryTreeNode *pTemp = pNode->Left;
pNode->Left = pNode->Right;
pNode->Right = pTemp;
if(pNode->Left != NULL)
{
MirrorRecursively(pNode->Left);
}
if(pNode->Right != NULL)
{
MirrorRecursively(pNode->Right);
}
}