我编写了一个二叉树,现在我在顺序打印时遇到了问题。当我调用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);
}
}
答案 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();
}
}
}