请把一段纸条竖着放在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开。此时折痕是凹下去的,即折痕突起的方向指向纸条的背面。 如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕、下折痕和上折痕。
给定一个输入参数N,代表纸条都从下边向上方连续对折N次。 请从上到下打印所有折痕的方向。
例如:N=1时,打印: down N=2时,打印: down down up
思路,首先是树结构,遍历中序遍历输出
对折实验:可见左叶子节点都是凹,右边都是凸,所以我们中序遍历,遍历的时候如果是左子树就放入 凹 右子树就放入凸。
凹
凹 凸
凹 凸 凹 凸
代码:
package 算法.二叉树;
public class test6 {
/**
* 请把一段纸条竖着放在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开。此时折痕是凹下去的,即折痕突起的方向指向纸条的背面。 如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕、下折痕和上折痕。
*
* 给定一个输入参数N,代表纸条都从下边向上方连续对折N次。 请从上到下打印所有折痕的方向。
*
* 例如:N=1时,打印: down N=2时,打印: down down up
*
*
* 思路,首先是树结构,遍历中序遍历输出
*
* 对折实验:可见左叶子节点都是凹,右边都是凸,所以我们中序遍历,遍历的时候如果是左子树就放入 凹 右子树就放入凸。
*/
public static void main(String[] args) {
process(3,"凹");
}
private static void process(int i, String str) {
i=i-1;
if ( i>= 0) {
process(i,"凹");
System.out.println(str);
process(i,"凸");
}
}
}