問題1:

打印二叉樹.png
思路:
假設折三次,折完之后的折痕就是下下上下下上上,按照每次折的開始建立二叉樹(建立過程中才知道是二叉樹的)
1 下
/
2 下 上
/ \ /
3 下 上 下 上
這樣的結構,再和打印的順序對應,發(fā)現(xiàn)是二叉樹的中序遍歷,代碼如下,遞歸實現(xiàn)
代碼:
public static void printAllFolds(int N) {
printProcess(1, N, true);
}
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 = 4;
printAllFolds(N);
}
在這里說一下遞歸,注意遞歸就可以看作是系統(tǒng)幫你實現(xiàn)的一個棧,自動進出棧,以本題為例,如下圖

棧實現(xiàn)遞歸過程.png