剑指offer刷题———二叉树的镜像

问题重述:

题目:二叉树的镜像

 请完成一个函数,输入一个二叉树,该函数输出它的镜像;二叉树的定义如下:

struct BinaryTreeNode
{
	int m_nValue;
	BinaryTreeNode* m_pLeft;
	BinaryTreeNode* m_pRight;
};

思路解析:

我们先来看看镜像后的二叉树是什么样子的。如下:

如上图,右边是左边二叉树的镜像。

可以发现,所有节点的左右孩子的位置都发生了变化。所以我们可以从根节点开始,先将6和10的位置调换,再将11和9的位置调换,最后再将7和5的位置调换。

代码实现:

void MirrorBinTree(BinaryTreeNode* tree)
{
	BinaryTreeNode* node = tree;
	if (node != nullptr && (node->m_pLeft != nullptr || node->m_pRight != nullptr))
	{
		BinaryTreeNode* temp = node->m_pLeft;
		node->m_pLeft = node->m_pRight;
		node->m_pRight = temp;
	}
	if (node->m_pLeft)
		MirrorBinTree(node->m_pLeft);
	if (node->m_pRight)
		MirrorBinTree(node->m_pRight);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值