您的位置:首页 > 其它

二叉树系列——二叉树的镜像

2016-03-16 10:02 344 查看
来源:剑指offer 面试题19

思路:我们先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有非叶子节点的左右子节点之后,就得到了树的镜像。

下面是代码:

//二叉树定义
struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode*m_pRight;
};

/************************************************************************/
/* 二叉树的镜像 剑指offer,面试题19 */
/************************************************************************/
void BinaryTreeMirror(BinaryTreeNode* pNode){
if (pNode == NULL)//边界判断,输入为空
{
return;
}
if (pNode->m_pLeft == NULL&&pNode->m_pRight == NULL)//叶子节点
{
return;
}
BinaryTreeNode*pTemp = pNode->m_pLeft;//交换左右
pNode->m_pLeft = pNode->m_pRight;
pNode->m_pRight = pTemp;
if (pNode->m_pLeft)//左边不为空
{
BinaryTreeMirror(pNode->m_pLeft);
}
if (pNode->m_pRight)//右边不为空
{
BinaryTreeMirror(pNode->m_pRight);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二叉树的镜像