2017-03-01 1 views
1

私は来週の私のcs中期試験のために勉強しています。私たちは中期試験のサンプルを受け取りました。これを正しく実行しているかどうかを知りたいと思います。リンクされたリストとBSTのツリーが最も低く見つかりました

  1. クラスの最大要素を返すpublic T lowest()メソッドを記述します。

    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 T最低の()を書く:

    public class List<T extends Comparable<T>> 
    { 
        private Node<T> head; 
        // some methods here 
        private class Node<T> 
        { 
         T data; 
         Node<T> next; 
        } 
    } 
    

    は、ここに私の答えです。ここで

    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

@JayeshDoolani私は左端の葉が常に最低値をとっていると思ったので、私はその値を返すのです。 – bubbles2189

+0

ああ、そうです。私はそれがBSTではなく一般的なバイナリツリーだと思っていました。その場合you'rコードは動作します –

答えて

0
  1. あなたのコードは、それが無限ループに入りますwhileループのバグがあります。現在の最小値より小さい値を持つノードが見つかると、先に進んでいるだけです。何があってもポインタを前進させておき、条件が満たされたときにmin変数を更新する必要があります。誘い込むループは次のようにする必要があります:Q2については

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

+0

ありがとう私はそれをキャッチしていない – bubbles2189

関連する問題