二叉树-解决折纸问题

前言

请把一段纸条竖着放在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开。此时折痕是凹下去的,即折痕突起的方向指向纸条的背面。 如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕、下折痕和上折痕。
给定一个输入参数N,代表纸条都从下边向上方连续对折N次。 请从上到下打印所有折痕的方向。
例如:N=1时,打印: down N=2时,打印: down down up

代码实现

public class App {


    public static void main(String[] args) {
        //根据传入的N创建树
        Node tree = createTree(2);
        //打印树
        printTree(tree);
    }

    private static Node createTree(int n) {
        if (n==0){
            return null;
        }

        Node root = null;
        Queue queue = new Queue<>();
        for (int i = 0; i < n; i++) {
            if (i==0){
                root = new Node("down",null,null);
                queue.add(root);
                continue;
            }
            while (!queue.isEmpty()){
                Node temp = queue.get();
                if (temp.left!=null){
                    queue.add(temp.left);
                }

                if (temp.right!=null){
                    queue.add(temp.right);
                }

                if (temp.left==null&&temp.right==null){
                    temp.left = new Node("down",null,null);
                    temp.right = new Node("up",null,null);
                }
            }

        }

        return root;
    }


    private static void printTree(Node tree) {
        //这里采用中序遍历
        if (tree==null){
            return;
        }

        if (tree.left!=null){
            printTree(tree.left);
        }
        System.out.print(tree.item+",");
        if (tree.right!=null){
            printTree(tree.right);
        }



    }

    private static class Node{
        T item;
        Node left;
        Node right;

        public Node(T item, Node left, Node right) {
            this.item = item;
            this.left = left;
            this.right = right;
        }
    }


}

你可能感兴趣的:(数据结构与算法,算法,数据结构,二叉树,折纸问题)