您的位置:首页 > 理论基础 > 数据结构算法

二叉树的镜像

2017-04-18 20:58 162 查看
剑指offer面试题19:请完成一个函数,输入一个二叉树,该函数输出它的镜像

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)
Mirror(pHead->m_pLeft);
//如果右孩子不为空,递归处理
if(pHead->m_pRight)
Mirror(pHead->m_pRight);

}
void MirrorIteratively(BinaryTreeNode* pHead){

if(pHead==NULL)return;
//如果左右孩子均为空,则直接返回
if(pHead->m_pLeft==NULL&&pHead->m_pRight==NULL)return;
std::stack<BinaryTreeNode*> stackTreeNode;
stackTreeNode.push(pHead);
while(!stackTreeNode.empty()){
BinaryTreeNode* root = stackTreeNode.top();
stackTreeNode.pop();

BinaryTreeNode* pTemp=root->m_pLeft;
root->m_pLeft=root->m_pRight;
root->m_pRight=pTemp;
if(root->m_pLeft)
stackTreeNode.push(root->m_pLeft);
if(root->m_pRight)
stackTreeNode.push(root->m_pRight);
}

}


参考:剑指offer 何海涛
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 面试题