二叉树定义:
struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode*m_pLeft;
BinaryTreeNode*m_pRight;
};
思路:输出镜像,其实也就是我们在遍历的时候改变它的左右孩子。
void MirrorRecursively(BinaryTreeNode*pHead)//镜像的根节点一致,所以不用传二级指针
{
if (pHead == NULL)
{
return ;
}
if (pHead->m_pLeft == NULL&&pHead->m_pRight == NULL)
{
return ;
}
//递归遍历->交换左右子树
//交换左右子树
BinaryTreeNode* pTemp = pHead->m_pLeft;
pHead->m_pLeft = pHead->m_pRight;
pHead->m_pRight = pTemp;
if (pHead->m_pLeft)
{
MirrorRecursively(pHead->m_pLeft);
}
if (pHead->m_pRight)
{
MirrorRecursively(pHead->m_pLeft);
}
}