剑指Offer系列-面试题19:二叉树的镜像

来源:互联网 发布:网络视频广播 编辑:程序博客网 时间:2024/05/04 15:17
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树的结点定义如下:
struct BinaryTreeNode{    int m_nValue;    BinaryTreeNode* m_pLeft;    BinaryTreeNode* m_pRight;};

思路:

代码:

// 递归实现void MirrorRecursively(BinaryTreeNode *pNode){    if((pNode == NULL) || (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)        MirrorRecursively(pNode->m_pLeft);    if(pNode->m_pRight)        MirrorRecursively(pNode->m_pRight);}// 非递归实现void MirrorIteratively(BinaryTreeNode* pRoot){    if(pRoot == NULL)        return;    std::stack<BinaryTreeNode*> stackTreeNode;    stackTreeNode.push(pRoot);    while(stackTreeNode.size() > 0)    {        BinaryTreeNode *pNode = stackTreeNode.top();        stackTreeNode.pop();        BinaryTreeNode *pTemp = pNode->m_pLeft;        pNode->m_pLeft = pNode->m_pRight;        pNode->m_pRight = pTemp;        if(pNode->m_pLeft)            stackTreeNode.push(pNode->m_pLeft);        if(pNode->m_pRight)            stackTreeNode.push(pNode->m_pRight);    }}


0 0
原创粉丝点击