java - 二叉树递归PrintInOrder函数

标签 java binary binary-tree

给定:

public void printInorder() {
    printInorder(root);
}

private void printInorder(Node<E> n) {
    ...
}
private static class Node<E> {
    private E data;
    private Node<E> left;
    private Node<E> right;

    private Node(E data) {
         data = data;
         left = right = null;
    }

我的任务是完成私有(private) Inorder 方法,使其能够与递归一起使用。 到目前为止我所做的是:

private void printInorder(Node<E> n) {
if (n != null) {
    printInorder(n.left);
    System.out.println(n.data);
    printInorder(n.right);

这是正确的答案,我只是不明白为什么它是正确的。

我明白,如果您在公共(public)方法中输入 printInorder(root) 。它将使用私有(private)方法并首先打印左侧,然后“System.out.println”所有数据。然后它会走到右侧,但是它如何在右侧打印数据呢?

预先感谢您的帮助!

最佳答案

解释了下面的递归模式。希望有助于理解正确的节点部分。

printInorder(1) 
    printInorder(2) //left node of 1
        printInorder(4) //left node of 2
            printInorder(null) // left node of 4. does not print anything. 
        System.out.println(4);
        printInorder(null); // right node of 4 
    System.out.println(2);
    printInorder(5); //referring right node of 2
        printInorder(null); // left node of 5 . No print here
    System.out.println(5);
    printInorder(null); // right node of 5. No print here
System.out.println(1);
    printInorder(3); // right node of 1
        printInorder(6) // left node of 6
            printInorder(null) // left node of 3. does no print here
        System.out.println(6);
        printInorder(null); // right node of 6 . No print here
    System.out.println(3);
        printInorder(7); //referring right node of 3
            printInorder(null); // left node of 7 . No print here
        System.out.println(7);
        printInorder(null); // right node of 7. No print here   

关于java - 二叉树递归PrintInOrder函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61096424/

相关文章:

java - JDBC驱动程序实现和类加载

java - 什么时候使用哈希表?

vim - vim中跳转到字节地址?

java - 在 while 循环(或 for 循环)内创建一个数组,然后在外部使用该数组

java jdom xml 复制一段xml

java - java中二进制到十进制转换的问题(数组)

c - 二进制形式的文件

树上的算法。是否有提示可以帮助指出有效解决问题的方法?

c - 为什么下面的代码显示错误?

arrays - 如何证明从完全二叉树到数组的转换?