链接列表和BST树找到最低

时间:2017-03-01 14:50:59

标签: java

我正在为下周的cs期中考试而学习。我们收到了一个样本期中考试,我想知道我是否正确这样做。

  1. 编写一个方法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;
    

    }

  2. 编写一个方法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;
        }
    }
    
  3. 以下是我的回答:

    public T lowest()
    {
        Node current = root;
        while(current.left != null)
        {
            current = current.left;
        }
        return current.data;
    }
    

1 个答案:

答案 0 :(得分:0)

  1. 您的代码在while循环中有一个错误,它将进入无限循环。如果找到一个值小于当前最小值的节点,则只是向前推进指针。无论如何都必须继续推进指针,并在满足条件时更新min变量。诡计循环应该是这样的:

    while(pointer != null) { if(pointer.data.compareTo(min) < 0) { min = pointer.data; } pointer = pointer.next; }