当前位置:   article > 正文

二叉树-7.11 折纸

二叉树-7.11 折纸

题目:

请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。

给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up".

思路:

可以自己折纸试一下。折一次是下折痕,两次是“下上”,三次是“下上下下上”,可以发现,每一次折痕,都是在上一次折痕左边加一条下折痕,右边加一条上折痕(这里用红色加粗的字来代表上一次的折痕)。它们正好可以形成一颗满二叉树的中序遍历

代码:

  1. # -*- coding:utf-8 -*-
  2. class FoldPaper:
  3. def foldPaper(self, n):
  4. # write code here
  5. ans = []
  6. def dfs(level, fold):
  7. if level > n:
  8. return
  9. dfs(level+1, "down")
  10. ans.append(fold)
  11. dfs(level+1, "up")
  12. dfs(1, "down")
  13. return ans

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/290225
推荐阅读
相关标签
  

闽ICP备14008679号