赞
踩
请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。
给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up".
可以自己折纸试一下。折一次是下折痕,两次是“下下上”,三次是“下下上下下上上”,可以发现,每一次折痕,都是在上一次折痕左边加一条下折痕,右边加一条上折痕(这里用红色加粗的字来代表上一次的折痕)。它们正好可以形成一颗满二叉树的中序遍历:
- # -*- coding:utf-8 -*-
-
- class FoldPaper:
- def foldPaper(self, n):
- # write code here
- ans = []
- def dfs(level, fold):
- if level > n:
- return
- dfs(level+1, "down")
- ans.append(fold)
- dfs(level+1, "up")
-
- dfs(1, "down")
- return ans
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。