我正在为下周的cs期中考试而学习。我们收到了一个样本期中考试,我想知道我是否正确这样做。
编写一个方法public T lowest(),它返回类中最大的元素。
public class List<T extends Comparable<T>>
{
private Node<T> head;
// some methods here
private class Node<T>
{
T data;
Node<T> next;
}
}
以下是我的回答:
public T lowest()
{
if(head == null)
return null;
Node<T> pointer = head;
T min = pointer.data;
while(pointer != null)
{
if(pointer.data.compareTo(min) < 0) //
{
min = pointer.data;
pointer = pointer.next;
}
}
return min;
}
编写一个方法public T lowest(),它返回存储在树中的最低值。
public class BST<T extends Comparable<T>>
{
private Node<T> root;
// some methods here
private class Node<T>
{
T data;
Node<T> left, right;
}
}
以下是我的回答:
public T lowest()
{
Node current = root;
while(current.left != null)
{
current = current.left;
}
return current.data;
}
答案 0 :(得分:0)
您的代码在while循环中有一个错误,它将进入无限循环。如果找到一个值小于当前最小值的节点,则只是向前推进指针。无论如何都必须继续推进指针,并在满足条件时更新min变量。诡计循环应该是这样的:
while(pointer != null) {
if(pointer.data.compareTo(min) < 0) {
min = pointer.data;
}
pointer = pointer.next;
}