【二叉树】折纸问题

把一张纸条从下边向上方对折1次,压出折痕后展开。此时折痕是凹下去的,即折痕突起的方向指向纸条的背面。如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕、下折痕和上折痕。再次对折, 每条折痕上方产生新的下折痕, 下方产生新的上折痕.alt
构建二叉树模型, 可以看出除根节点是下折痕外, 新的左子树都是下折痕, 新的右子树都是上折痕。

给定一个输入参数N,代表纸条都从下边向上方连续对折N次,请从上到下打印所有折痕的方向。即中序遍历二叉树。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	static StringBuilder sb = new StringBuilder();
	public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		fold(1, N, true);
		System.out.println(sb.toString());
	}
	public static void fold(int i, int N, boolean isConcave) {
		if(i > N)
			return;
		fold(i + 1, N, true);
		sb.append(isConcave ? "down" : "up");
		sb.append("\n");
		fold(i + 1, N, false);
	}
}

posted @   brbrbr  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示