Создайте Java PrintWriter для PrintStream - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь написать пример из моего учебника по рекурсии, в котором у меня есть этот метод для печати списка ключей и значений из моего двоичного дерева поиска:

public void listBindings(PrintStream out) {
        if (root != null) {
            root.left.listBindings(out);
            out.println(root.key + " = " + root.value);
            root.right.listBindings(out);
        }
    }

Мне нужно создать getWriter () используя PrintWriter, чтобы распечатать список этих ключей и привязок из моего BST. Как мне это сделать?

Я пробовал эти способы:

public String printListBindings() {
        if (root != null) {
            StringBuilder sb = new StringBuilder();
            sb.append(root.left);
            sb.append(root.key + " = " + root.value);
            sb.append(root.right);
        }
        return printListBindings(); // this recurses to a stackoverflow
    }

public String getWriter(listBindings (out)) {
        PrintWriter pw = new PrintWriter(listBindings(out), true);
        return pw.toString();
    }


    public String printBindings(ArrayList<String> bindings) {
        if (root != null) {
            String leftNode = root.left.listBindings(key); // I think it is supposed to recurse?
            String rightNode = root.right.key; // or maybe this way?
            bindings.add(root.key);
        }

        return bindings.toString();
    }


        public void writeBindings(String fileName) {
        PrintWriter outputWriter = new PrintWriter(out);
        ArrayList<String> bindings = new ArrayList<String> ();
        for (String binding : bindings) {
            outputWriter.write(binding);
            outputWriter.newLine();
        }
        outputWriter.close();

    }
...