问题描述:一条纸条,对折N次,折痕朝向有凹有凸,从左到右依次输出折痕
解题思路:假设对折一次的折痕记为“凹”,对折N次会发现,折痕会形成左子树都为“凹”,右子树都为“凸”的二叉树,最终遍历的结果,为折痕形成树形结构的中序遍历结果。
1 def print_all_folds(n): 2 print_process(1, n, True) 3 4 def print_process(i, n, down): 5 """ 6 i为节点的层数 7 n为总层数 8 down==true 凹;down==false 凸 9 """ 10 if i > n: 11 return 12 print_process(i+1, n, True) 13 if down: 14 print("凹") 15 else: 16 print("凸") 17 print_process(i+1, n, False)