最终的实现结果如图所示:
过程为:先前序遍历整棵树的节点,如果遍历到的节点有子节点,就交换它的两个子节点,当交换完它所有的非叶子节点的左右子节点之后,就得到了树的镜像
代码实现如下:
void* Mirror(TreeNode *pRoot)
{
if(pRoot==NULL)
{
return;
}
if(pRoot->left==NULL&&pRoot->right==NULL)
{
return;
}
TreeNode* pLeft=pRoot->left;
pRoot->left=pRoot->right;
pRoot->right=pLeft;
if(pRoot->left!=NULL)
{
Mirror(pRoot->left);
}
if(pRoot->right!=NULL)
{
Mirror(pRoot->right);
}
}