2017-03-01 69 views
1

我正在为下周的cs期中考试而学习。我们收到了期中考试样本,我想知道我是否正确地做了这个。链接列表和BST树找到最低

  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. 写的方法公开牛逼最低()返回存储的int树中的最低值。

    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

对于Q2,你要找到树或最低节点值树上的叶子最低?无论如何,你做错了。你的代码将返回树中最左边叶的数据值。 –

+0

@JayeshDoolani我以为最左边的叶子总是有最低的值,所以这就是为什么我返回那个值 – bubbles2189

+0

啊,你是对的。我认为这是一个普通的二叉树,而不是BST。在这种情况下你的代码将工作 –

回答

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

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

+0

谢谢我没有抓住那个 – bubbles2189