一张纸一直对折,按顺序打印

请把一段纸条竖着放在桌子上,然后从纸条的下边向上方对折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,"凸");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/u010191034/article/details/121348011