Проблема параметров метода в самопрограммируемом двоичном дереве - PullRequest
0 голосов
/ 14 ноября 2018

Я запрограммировал Binary-Tree, теперь у меня проблема с печатью по порядку. Когда я вызываю мой метод printIO, метод printIO вызывает другой метод, для которого в качестве параметра требуется корневой узел (как я печатаю рекурсивно), который метод вызывает каждый раз и пропускает следующий узел.

Есть ли способ напечатать дерево без 2-х методов и без параметров в основном?

Идея:
сделайте временный узел статическим и не используйте параметр в конечном методе печати. Это не сработало, так как я получил некоторые исключения. Есть идеи?

Фрагмент кода main :

 BinList bl = new BinList();
 bl.add(9);
 bl.add(7);
 ...
 bl.printIO();

Фрагмент кода класса списка:

public void printIO() {
    print_in_order(root);
}

private void print_in_order(Node temp) {
    if (temp != null) {
        print_in_order(temp.left);
        System.out.println(temp.data);
        print_in_order(temp.right);
    }
}

1 Ответ

0 голосов
/ 14 ноября 2018

Вместо печати в классе BinList вы должны разделить ответственность между классом BinList и классом Node:

public class BinList {
    private Node root = ...;

    public void printInOrder() {
        if (root != null) {
            root.printInOrder();
        }
    }
}

public class Node {
    private Node left, right;
    private Object data;

    public void printInOrder() {
        if (left != null) {
            left.printInOrder();
        }
        System.out.printl(data);
        if (right != null) {
            right.printInOrder();
        }
    }
}
...