Использование IComparable в AVL Tree

голоса
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 дерева я хочу, чтобы сравнить левый и правый узел и другой баланс METHODE для него, но в начальной точке она не поддерживает в 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