2017-03-01 3 views
1

Ich studiere für meine cs Midterm-Prüfung für nächste Woche. Wir haben eine Probe-Zwischenprüfung erhalten und ich möchte wissen, ob ich das richtig mache.Linked List und BST Trees finden die niedrigsten

  1. Schreiben Sie eine Methode public T lost(), die das größte Element in der Klasse zurückgibt.

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

    Hier ist meine Antwort:

    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. Schreiben Sie eine Methode public T niedrigsten(), die den niedrigsten Wert int Baum gespeichert zurückgibt.

    public class BST<T extends Comparable<T>> 
    { 
        private Node<T> root; 
        // some methods here 
        private class Node<T> 
        { 
         T data; 
         Node<T> left, right; 
        } 
    } 
    

Hier ist meine Antwort:

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

Für Q2, tun Sie den niedrigsten Knotenwert im Baum oder das niedrigste Blatt im Baum finden wollen? In jedem Fall machst du es falsch. Ihr Code wird den Datenwert des linken Blattes in der Struktur zurückgeben. –

+0

@JayeshDoolani Ich dachte, das linke Blatt hat immer den niedrigsten Wert, deshalb habe ich diesen Wert zurückgegeben – bubbles2189

+0

ah, du hast Recht. Ich dachte, es ist ein allgemeiner Binärbaum und kein BST. In diesem Fall wird Ihr Code funktionieren –

Antwort

0
  1. Ihr Code einen Fehler in while-Schleife hat, wo es in einer Endlos-Schleife gehen. Sie rücken den Zeiger nur weiter vor, wenn er einen Knoten findet, dessen Wert kleiner als das aktuelle Minimum ist. Sie müssen den Zeiger, egal was, weiterführen und die min-Variable aktualisieren, wenn Ihre Bedingung erfüllt ist. Die wile Schleife sollte wie folgt sein:

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

+0

Vielen Dank Ich habe nicht thatt fangen – bubbles2189