返回二叉树的镜像

题目:

操作给定的二叉树,将其变换为源二叉树的镜像。

输入描述:

二叉树的镜像定义:源二叉树

8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5

   这道问题其实很简单,原以为可以打出来一次运行成功。实际发现脱离编译器手写没有一点bug真的是有点难度,稍不注意代码就错了。这里我们先对子树镜像,然后上溯到根结点调换左右子树就可以了。这里犯了两个错误(1)没有先保存好根结点的左右子树,递归调用右子树时再取右子树已经不是原来的右子树了。(2)返回类型不是void类型的函数一定要检查是不是每种情况下都有返回值。不要一开始写了几个if语句返回值程序最后就不写返回值了。

BinaryTreeNode* MirrorTree(BinaryTreeNode* pRoot)
{
	if(!pRoot)
		return NULL;
	if(!pRoot->m_pLeft && !pRoot->m_pRight)
		return pRoot;
	
	BinaryTreeNode* left = pRoot->m_pLeft;
	BinaryTreeNode* right = pRoot->m_pRight;
	pRoot->m_pLeft = MirrorTree(right);
	pRoot->m_pRight = MirrorTree(left);
	return pRoot;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值