折纸问题公式(算法21:折纸问题)
请把一段纸条竖着放在桌子上 ,然后从纸条的下边向上方对折1次 ,压出折痕后展开 。此时折痕是凹下去的 ,即折痕突起的方向指向纸条的背面 。 如果从纸条的下边向上方连续对折2次 ,压出折痕后展开 ,此时有三条折痕 ,从上到下依次是下折痕 、下折痕和上折痕 。
给定一个输入参数N ,代表纸条都从下边向上方连续对折N次 。 请从上到下打印所有折痕的方向 。
例如:N=1时 ,打印: down N=2时 ,打印: down down up
根据题目要求 ,我实际折了一把 ,并且每一次折的时候 ,我都进行了标注:1凹,代表第一次折的 , 2 凹或者2凸代表第二次折的 ,依次类推.....
观察了上图,确实停迷惑人的 ,下图我通过绘图的形式 ,更加直观的呈现这个问题的本身
通过手动绘制的图片 ,我们按照折纸的先后顺序 ,发现每次折纸 ,都会在之前的折纸痕迹左右再生出2道痕迹:
第一次折: 1 凹
第二次折: 1 凹两侧生出了 2凹 和 2凸
第三次折: 2凹 和 2凸两侧又生成了 3凹 和 3 凸
依次类推.........
最终我们发现 ,这就是一颗满二叉树 。而想要从上到下打印这张纸的痕迹 ,实际上就是中序遍历整颗二叉树的节点 。代码如下
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!