χρήση icomparable το AVL δέντρο

ψήφοι
0
 public class Node : IComparable

{
    public object element;
    public Node left;
    public Node right;
    public int height;


    public Node(object data, Node L, Node R)
    {

        element = data;
        left = L;
        right = R;
        height = 0;


    }
    public Node(object data)
    {

        element = data;
        left = null;
        right = null;
        height = 0;


    }

    public int CompareTo(object obj)
    {
        return (this.element.CompareTo((Node)obj.element));


    }


}

σε αυτό το δέντρο AVL θέλω να συγκρίνουν αριστερά και δεξιά του κόμβου και άλλα τη μέθοδο της ισορροπίας για αυτό, αλλά στο σημείο εκκίνησης δεν υποστηρίζει το compareto σε αυτή τη γραμμή κώδικα

 public int CompareTo(object obj)
    {
        return (this.element.CompareTo((Node)obj.element));


    }

αν και εγώ που χρησιμοποιούνται διεπαφή Icomaparable..anyone πει τι λείπει σε αυτό το ??????????????

Δημοσιεύθηκε 06/12/2011 στις 21:02
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Σας elementιδιότητα είναι αντικείμενο τύπου, έτσι ώστε να μην εφαρμόσουν IComparable. Αντ 'αυτού θα μπορούσε να κάνει μια γενική κατηγορία με τον περιορισμό ότι το στοιχείο δεδομένων του τύπου Tπρέπει να εφαρμόσει IComparable<T>:

public class Node<T> : IComparable<Node<T>> where T: IComparable<T>
{
    public T element;
    public Node<T> left;
    public Node<T> right;
    public int height;


    public Node(T data, Node<T> L, Node<T> R)
    {

        element = data;
        left = L;
        right = R;
        height = 0;


    }
    public Node(T data)
    {

        element = data;
        left = null;
        right = null;
        height = 0;


    }

    public int CompareTo(Node<T> other)
    {
        return element.CompareTo(other.element);
    }
}
Απαντήθηκε 06/12/2011 στις 21:09
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more