汉诺塔与二叉树

本文介绍了汉诺塔问题的由来、解决汉诺塔的递归算法及其与二叉树的关系,并给出了C语言的实现代码。通过递归图解和中序遍历的方式帮助理解汉诺塔的移动过程。最后指出递归和二叉树的密切联系,并暗示了如何将递归转换为非递归的解决方案。
摘要由CSDN通过智能技术生成

我相信很多朋友都知道汉诺塔问题,也有不少看过了它的程序实现,但我想有不少人不懂它是什么意思,为什么那几行程序就把汉诺塔问题给解了呢?

  先啰嗦一会儿。解释一下。。。

看看汉诺塔的由来  (从百度百科中摘来的)

汉诺塔是源自印度神话里的玩具。

 

上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。

上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

  有预言说,这件事完成时宇宙会在一瞬间闪电式毁灭。也有人相信婆罗门至今还在一刻不停地搬动着圆盘。

汉诺塔与宇宙寿命  如果移动一个圆盘需要1秒钟的话,等到64个圆盘全部重新落在一起,宇宙被毁灭是什么时候呢?

  让我们来考虑一下64个圆盘重新摞好需要移动多少次吧。1个的时候当然是1次,2个的时候是3次,3个的时候就用了7次......这实在是太累了

  因此让我们逻辑性的思考一下吧。

  4个的时候能够移动最大的4盘时如图所示。

  到此为止用了7次。

  接下来如下图时用1次,在上面再放上3个圆盘时还要用7次&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值