Java 试图打印postorder和inorder,但不知道如何操作

Java 试图打印postorder和inorder,但不知道如何操作,java,Java,我正在努力学习如何在二叉树中打印,我知道如何在预订单中打印,但无法理解如何在后订单中打印。我理解它们之间的区别,但不知道如何实施 int key ; Node left ; Node right ; public Node ( int x ) { payload = x ; } public void printPreorder() { System.out.println(this.key); if (left != null) { this.le

我正在努力学习如何在二叉树中打印,我知道如何在预订单中打印,但无法理解如何在后订单中打印。我理解它们之间的区别,但不知道如何实施

int key ;
Node left ;
Node right ;

public Node ( int x ) {
    payload = x ; 
}

public void printPreorder() {
    System.out.println(this.key);
    if (left != null) {
        this.left.printPreorder();
    }
    if (right != null) {
        this.right.printPreorder();
    }
}

public void printPostorder() {

}

public void printInorder() {
    System.out.println(this.key);   
}

}

简单,只需向下移动打印语句即可。一次用于订单,两次用于后期订单


它与Java没有太多关系,但与递归有关。在预排序中,您要做的是:从根开始打印,向左,打印。向左走,直到可以打印所有内容。然后开始右转,并在每一步打印。通过这个解释,试着找出在我解释的另外两个案例中发生了什么。试着像我写的那样叙述,你应该能够理解

简单,只需向下移动打印语句即可。一次用于订单,两次用于后期订单


它与Java没有太多关系,但与递归有关。在预排序中,您要做的是:从根开始打印,向左,打印。向左走,直到可以打印所有内容。然后开始右转,并在每一步打印。通过这个解释,试着找出在我解释的另外两个案例中发生了什么。试着像我写的那样叙述,你应该能够理解

所以我注意到您的顺序方法有一个问题,应该是这样的

public void printInorder() {
    if (left != null) {
        this.left.printInOrder();
    }
    System.out.println(this.key);
    if (right != null) {
        this.right.printInOrder();
    }
}

正确,因为使用“顺序”时,您希望从最低到最高打印。打印我的左边,打印我,然后打印右边

所以我注意到您的顺序方法有一个问题,应该是这样的

public void printInorder() {
    if (left != null) {
        this.left.printInOrder();
    }
    System.out.println(this.key);
    if (right != null) {
        this.right.printInOrder();
    }
}

正确,因为使用“顺序”时,您希望从最低到最高打印。打印我的左边,打印我,然后打印右边

谢谢你的邀请help@JMm你成功了吗?是的,我成功了,我也明白这一点help@JMm你成功了吗?是的,我成功了,我也理解