【问题标题】:Binary Tree Recursion PrintInOrder function二叉树递归 PrintInOrder 函数
【发布时间】:2020-04-08 08:27:40
【问题描述】:

给定:

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;
    }

我的任务是完成私有 Inorder 方法以使其与递归一起工作。 到目前为止我所做的是:

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

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

我了解,如果您在公共方法中输入 printInorder(root)。它将采用私有方法并首先打印左侧,然后是“System.out.println”所有数据。那么它会往右边走,但是它是怎么把右边的数据打印出来的呢?

提前感谢您的帮助!

【问题讨论】:

  • 添加断点,启动调试器,然后逐句逐句执行代码

标签: java binary binary-tree


【解决方案1】:

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

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   

【讨论】:

    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 2019-09-09
    • 2016-07-24
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 2016-04-19
    • 2014-03-29
    相关资源
    最近更新 更多