【二叉树】折纸问题
把一张纸条从下边向上方对折1次,压出折痕后展开。此时折痕是凹下去的,即折痕突起的方向指向纸条的背面。如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕、下折痕和上折痕。再次对折, 每条折痕上方产生新的下折痕, 下方产生新的上折痕
构建二叉树模型, 可以看出除根节点是下折痕外, 新的左子树都是下折痕, 新的右子树都是上折痕。
给定一个输入参数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);
}
}
本文来自博客园,作者:brbrbr,转载请注明原文链接:https://www.cnblogs.com/brbrbr/p/15881478.html

浙公网安备 33010602011771号