Question

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


    }


}

dans cet arbre avl je veux comparer à gauche et à droite du nœud et autres solde methode pour elle, mais au point de départ, il ne prend pas en charge dans compareto dans cette ligne de code

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


    }

bien que j'ai utilisé l'interface Icomaparable..personne dire ce qui manque dans elle??????????????

Était-ce utile?

La solution

Votre element la propriété est de type object, afin de ne pas mettre en œuvre IComparable.Au lieu de cela, vous pourriez faire une classe générique avec la contrainte que l'élément de données de type T doit mettre en œuvre 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);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top