gpt4 book ai didi

java - 排序方法无法正常工作

转载 作者:行者123 更新时间:2023-12-01 13:08:41 24 4
gpt4 key购买 nike

我试图按特定值对 BST 中的节点进行排序,但由于某种原因,它无法正常工作,而且我不知道我错过了什么......

根据用户输入,菜单将显示高于或低于特定值(本例中为 GPA)的记录。我知道,这不是获得它的最佳方式,但它还没有完成:

    public void sortGPA (double min, double max) {
inOrderTraverseTree(root, min, max);
}

哪个调用

public void inOrderTraverseTree(Node focusNode, double min, double max) {

if (focusNode != null) {
inOrderTraverseTree(focusNode.leftChild, min, max);

if (root.gpa >= min && root.gpa <= max){
System.out.println(focusNode);
}
else {
System.out.print("");
}

inOrderTraverseTree(focusNode.rightChild, min, max);
}// end if
}// end inOrderTraverseTree

因此,每次运行此命令时,如果输入为 (minVal, 4.0) ,则绝对不会显示任何内容。如果它是(0.0, max),那么它会显示整个列表,甚至是那些超出给定范围的值。要么是我错过了一些非常小的东西,要么是我错过了一些巨大的东西,所以如果您看到任何东西,我将不胜感激。

以下是输出示例:

All students: 
19 Kyle Johnson Chemistry 1.43
24 Chloe Young History 2.23
23 Bill Guy Accounting 3.32
25 Ashley Holmes Accounting 3.75
22 John Smith History 4.00
---------------------------------
Here are the students above a 3.5 GPA:
19 Kyle Johnson Chemistry 1.43
24 Chloe Young History 2.23
23 Bill Guy Accounting 3.32
25 Ashley Holmes Accounting 3.75
22 John Smith History 4.00
---------------------------------
Here are the students below a 3.0 GPA:
---------------------------------

最佳答案

我认为问题是您正在对 root.gpa 执行调用,无论您引用的树中的节点位于何处。试试这个。

public void inOrderTraverseTree(Node focusNode, double min, double max) 
{

if (focusNode != null) {
inOrderTraverseTree(focusNode.leftChild, min, max);

if (focusNode.gpa >= min && focusNode.gpa <= max){
System.out.println(focusNode);
}
else {
System.out.print("");
}

inOrderTraverseTree(focusNode.rightChild, min, max);
}// end if
}// end inOrderTraverseTree

关于java - 排序方法无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com