当前位置: 首页 > 知识库问答 >
问题:

print语句在这两种方法中到底是如何工作的?

子车轶
2023-03-14

这是对二分搜索树的wrt。我以两种方式遍历树。1)顺序遍历树t的顺序遍历是一种递归算法,它遵循左子树;一旦没有更多的左子树要处理,我们就处理右子树。元素按左-根-右顺序处理。2)后顺序遍历树t的后顺序遍历是一种递归算法,它在处理根元素之前遵循左和右子树。元素按左-右-根顺序处理。

我对递归方法和print语句是如何工作的感到困惑。你能给我开导一下吗?

static void inOrder(Leaf root){
    if(root != null){
        inOrder(root.left);
        System.out.print(root.value+" ");
        inOrder(root.right);
    }
}
static void postOrder(Leaf root){
    if(root != null){
        postOrder(root.left);
        postOrder(root.right);
        System.out.print(root.value+" ");
    }
}

共有1个答案

林龙野
2023-03-14

它的工作方式是每个函数将打印出一个包含每个值的长行,如果树。当每种算法通过树时,它会将节点的当前值附加到输出中,同时附加一个空格。例如,如果我们考虑以下树:

  2
 / \
1   3

第一个算法将从2开始,然后在左边的子项1上调用自身。该函数随后将在左侧子项上调用自身,该子项为null,因此它将立即返回。然后该函数将“1”打印到控制台。该函数将在正确的子项上调用自身,该子项为null,因此它将立即返回。然后函数将返回到2,“2”将被打印到控制台。然后,函数将在正确的子级上调用自己,这是3。该函数将在左侧子项上调用自身,该子项返回,然后将“3”打印到控制台,然后在右侧子项上调用自身,该子项返回。然后函数将返回到2,而该函数将返回到任何叫它的函数。最后的控制台会说

1 2 3 

第二个算法也会发生类似的情况,只是该函数将在打印根节点2之前分别打印左子节点1和右子节点3,结果如下:

1 3 2 

如果你理解它有困难,它将有利于你自己画一棵树,并按照代码一步一步地看计算机在做什么。

 类似资料:
  • 这是一个使用合并排序的程序,从1到1000对1000个数字的列表进行排序。它显示原始列表,然后调用递归方法对其进行排序,然后显示。 代码中我不明白的是这两行: 合并排序(数字,低,中);//在方法中,它会说“这里” 合并排序(数字,中间1,高); 我是java的初学者,这与我所学的一切背道而驰,因为我无法理解如何在方法中调用方法。除非它是一个我怀疑的对象。有人能解释一下这两行代码的作用吗?

  • 我有一个非常简单的原型: 当我试图将其解析为字符串时,我从jsonFormat.printer().print()得到一个非常奇怪的输出,这取决于success值。 输出:{“成功”:true} 输出:{} 因此,如果我用success属性为打印机赋予false值,它就不能生成JSON格式。我做错了什么?有谁能证实吗?

  • 我们知道主存域很少:年轻的、终生的(旧的gen)和PermGen。 年轻领域分为伊甸园和幸存者(有两个)。 OldGen用于生存的对象。 MaxTenuringThreshold防止对象过早地被最终复制到OldGen空间。这很清楚,也很容易理解。 但是它是如何工作的呢?垃圾回收器如何处理这些在MaxTenuringThreshold之前仍然存在的对象,以何种方式?它们位于何处? 对象被复制回幸存者

  • 我正在学习Spring核心认证,我对Spring如何处理bean生命周期有一些疑问,特别是bean后处理器。 所以我有了这个模式: 我很清楚这意味着什么: 然后在bean创建阶段执行以下步骤: > 每个bean都在缺省情况下被急切地实例化(按照正确的顺序创建,并注入其依赖项)。 在依赖注入之后,每个bean都会经历一个后处理阶段,在这个阶段中可能会进行进一步的配置和初始化。 > 初始化器:如果指示

  • 我是Spring MVC的新手,我对这个验证器示例的工作原理有以下疑问: 所以我有这个搜索。jsp页面,用户可以通过两个字段(产品名称和产品所属类别)搜索产品: 因此,在本教程中,我们将对实现自定义验证器的前一个视图的两个字段的输入进行一些限制。在特定情况下,用户必须: 1) 用户必须插入产品名称或类别 2) 名称长度必须至少由3个字符组成。 3) 用户只能按名称或类别进行选择,但不能在产品模型对

  • 我的test.feature文件: 我的test_steps.py文件: