题目:
请完成一个函数,输入一个二叉树,该函数输出他的镜像。
如图就是一个镜像的例子。
仔细观察就会发现这个图是有规律的,你会发现父节点和孩子结点关系是没有变化的,只是兄弟结点发生了变化,左兄弟变成了右兄弟,右兄弟变成了左兄弟。
那么我们就可以用先序遍历,使左右结点互相换。
下面是代码:
void MirrorRecusively(BinaryTreeNode *pNode)
{
if(pNode == NULL)
return ;
if(pNode->m_pLeft == NULL && pNode->m_pRight == NULL)
return ;
BinaryTreeNode * temp = pNode->m_pLeft;
pNode->m_pLeft = pNode->m_pRight;
pNode->m_pRight = temp;
if(pNode->m_pLeft)
MirrorRecusively(pNode->m_pLeft);
if(pNode->m_pRight)
MirrorRecusively(pNode->m_pRight);
}