uso de IComparable en AVL Árbol

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


    }


}

en este árbol AVL quiero comparar nodo de izquierda y derecha y otra méthode equilibrio para ella, pero en el punto de partida no es compatible en compareTo en esta línea de código

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


    }

aunque yo solía interfaz Icomaparable..anyone dicen lo que falta en ella se ??????????????

Publicado el 06/12/2011 a las 21:02
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Su elementpropiedad es de tipo de objeto, por lo que no implementa IComparable. En su lugar se podría hacer una clase genérica con la restricción de que el elemento de datos de tipo Tdebe implementar 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);
    }
}
Respondida el 06/12/2011 a las 21:09
fuente por usuario

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