//*** 递归 **//
void MirrorRecursively(TreeNode *pRoot)
{
if((pRoot == NULL) || (pRoot->left == NULL && pRoot->right == NULL))
return;
TreeNode *pTemp = pRoot->left;
pRoot->left = pRoot->right;
pRoot->right = pTemp;
if(pRoot->left)
MirrorRecursively(pRoot->left);
if(pRoot->right)
MirrorRecursively(pRoot->right);
}
//*** 非递归 **//
void MirrorIteratively(TreeNode* pRoot)
{
if(pRoot == NULL)
return;
std::stack<TreeNode*> stackTreeNode;
stackTreeNode.push(pRoot);
while(stackTreeNode.size() > 0)
{
TreeNode *pNode = stackTreeNode.top();
stackTreeNode.pop();
TreeNode *pTemp = pNode->left;
pNode->left = pNode->right;
pNode->right = pTemp;
if(pNode->left)
stackTreeNode.push(pNode->left);
if(pNode->right)
stackTreeNode.push(pNode->right);
}
}
二叉树的镜像 递归与非递归
猜你喜欢
转载自blog.csdn.net/feixi7358/article/details/82911605
今日推荐
周排行