对Hanoi塔问题的理解

汉诺塔的递归算法如下(递归的原理和汉诺为什么可以用递归就不详说了):

 

可以看出它跟树的中序遍历没有多大区别,在搜索的过程中,只是按照中序遍历的方式把节点输出出来。这样,我们就可以把中序遍历树画出来:

 

 

 

怎么理解这棵树呢?其中根节点就是要移动的最底下最大的盘,下一层节点是次大的盘……叶节点是最小的盘。每次遍历到某一个层的某一个节点,则移动该层所代表的盘。移动的方式的讨论必须先定义一个方向:

定义1ABCA这个方向为顺时针方向;

定义2ACBA这个方向为逆时针方向;

定义3、根节点为第一层,叶节点为最高的一层。

这样,当移动奇数层的时候,对应的盘顺时针移动一个塔座;当移动偶数层的时候,对应的盘逆时针移动一个塔座。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值