二叉树的镜像

剑指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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值