折纸问题

折纸问题

【题目】

请把一段纸条竖着放在桌子上, 然后从纸条的下边向上方对折1次, 压出折痕后展开。 此时

折痕是凹下去的, 即折痕突起的方向指向纸条的背面。 如果从纸条的下边向上方连续对折2

次, 压出折痕后展开, 此时有三条折痕, 从上到下依次是下折痕、 下折痕和上折痕。 给定一

个输入参数N, 代表纸条都从下边向上方连续对折N次, 请从上到下打印所有折痕的方向。

例如: N=1时, 打印:

down

N=2时, 打印:

down

down

up

思路

可以看出这是一个满二叉树结构,将该结构中序遍历即为所求

代码

public class PaperFolding {

	public static void printAllFolds(int N) {
		printProcess(1, N, true);
	}
        //i代表当前二叉树层数
	public static void printProcess(int i, int N, boolean down) {
		if (i > N) {
			return;
		}
		printProcess(i + 1, N, true);
		System.out.println(down ? "down " : "up ");
		printProcess(i + 1, N, false);
	}

	public static void main(String[] args) {
		int N = 3;
		printAllFolds(N);

	}
}

猜你喜欢

转载自blog.csdn.net/u013015065/article/details/79320695
今日推荐