Verwendung von IComparable in AVL-Baum

stimmen
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));


    }


}

in diesem avl Baum möchte ich für ihn linken und rechten Knoten und andere Balance Methode vergleichen, sondern in Startpunkt ist es nicht in compareTo in dieser Codezeile unterstützen

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


    }

obwohl ich Schnittstelle Icomaparable..anyone sagen, was es in ihm fehlt ??????????????

Veröffentlicht am 06/12/2011 um 21:02
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Ihre elementEigenschaft ist vom Typ Objekt, so dass es nicht implementiert IComparable. Stattdessen könnten Sie eine generische Klasse mit der Einschränkung, dass das Datenelement vom Typ Timplementieren müssen 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);
    }
}
Beantwortet am 06/12/2011 um 21:09
quelle vom benutzer

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