gebruik van iccomparable in AVL Tree

 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 deze avl-tree wil ik het linker en rechter knooppunt en andere balansmethode hiervoor vergelijken, maar in het begin ondersteunt het niet in vergelijking met deze regel code

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


    }

hoewel ik interface Icomaparable gebruikte..iemand vertelt wat er in zit ??????????????

0

1 antwoord

Your element property is of type object, so it doesn't implement IComparable. Instead you could make a generic class with the constraint that the data element of type T must implement IComparable:

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


    public Node(T data, Node L, Node 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 other)
    {
        return element.CompareTo(other.element);
    }
}
0
toegevoegd
hmm bedankt het betekent IComparable ondersteunt geen objecttype zijn voor genric ...
toegevoegd de auteur Rdx, de bron