自编程二进制树中的方法参数问题

时间:2018-11-14 20:13:25

标签: java binary-tree

我编写了一个二叉树,现在我在顺序打印时遇到了问题。当我调用printIO方法时,printIO方法调用另一个方法,该方法每次都调用该根节点(当我递归打印时)作为参数并传递下一个节点作为参数。

有没有什么方法可以在没有2种方法并且主体没有参数的情况下打印树?

想法:
将临时节点设为静态,并且在最终打印方法中不要使用参数。这没有用,因为我遇到了一些例外。有想法吗?

主要代码段

 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 :(得分:1)

应该在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();
        }
    }
}