我正在尝试按特定值对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:
---------------------------------
答案 0 :(得分:1)
我认为问题是你在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