剑指Offer系列-面试题19:二叉树的镜像
2017-02-16 22:34
453 查看
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树的结点定义如下:
思路:
代码:// 递归实现
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);
}
}
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);
}
}
相关文章推荐
- 面试题19_二叉树的镜像——剑指offer系列
- 剑指offer面试题19 二叉树的镜像
- 剑指offer--面试题19:二叉树的镜像--Java实现
- 《剑指Offer》学习笔记--面试题19:二叉树的镜像
- 剑指Offer:面试题19 二叉树的镜像
- 剑指Offer:面试题19——二叉树的镜像(java实现)
- 剑指offer之面试题19:二叉树的镜像
- 剑指offer——面试题19:二叉树的镜像
- 剑指offer 面试题19:二叉树的镜像(leetcode226. Invert Binary Tree) 题解
- 剑指offer——面试题19:二叉树的镜像
- 剑指offer 面试题19—二叉树的镜像
- 剑指Offer面试题19(Java版):二叉树的镜像
- (剑指Offer)面试题19:二叉树的镜像
- 【剑指offer系列】 二叉树的镜像___19
- 剑指offer——面试题19:二叉树的镜像
- [剑指offer][面试题19]二叉树的镜像
- 《剑指offer》19题自己实现求普通二叉树的镜像
- 面试题19:二叉树镜像
- 剑指offer 面试题19 二叉树的镜像
- 面试题19:二叉树的镜像