二叉树的镜像

来源:互联网 发布:mac怎么设置屏幕尺寸 编辑:程序博客网 时间:2024/06/09 20:36

剑指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 何海涛


0 0