Как использовать операторы сравнения с дженериками в C#

я пытался реализовать бинарное дерево поиска на C# с использованием дженериков, для того чтобы в дереве можно было хранить любые типы данных. Однако я столкнулся с проблемой, решение которой найти не смог. При попытки сравнить два элемента дерева между собой среда разработки выдала мне ошибку CS0019: "Оператор "<" невозможно применить к операнду типа "T" и "T"". Одним из вариантов возможного решения этой проблемы, который я нашел, была идея наложить ограничения на T, унаследовав его от интерфейса IComparable, затем перегрузив операции сравнения с помощью метода CompareTo(). Однако это проблему не решило. Код прикладываю ниже. Заранее спасибо за помощь. P.S.: Ошибка возникает в конце программы, в последнем "if"

class Node<T> where T : IComparable<T>
    {
        public T data;
        public Node<T> parent;
        public Node<T> left;
        public Node<T> right;
        public Node()
        {
            data = default;
            parent = null;
            left = null;
            right = null;
        }
        public static bool operator >(Node<T> x, Node<T> y)
        {
            return (x.data.CompareTo(y.data) > 0);
        }
        public static bool operator <(Node<T> x, Node<T> y)
        {
            return (x.data.CompareTo(y.data) < 0);
        }
    }

    class BinaryTree<T> where T: IComparable<T>
    {
        private Node<T> root;
        public BinaryTree()
        {
            root = new Node<T>();
        }
        public void add(T newData)
        {
            if (root.data == null)
            { root.data = newData; }
            else
            {
                var newNode = new Node<T>();
                newNode.data = newData;
                var curNode = root;
                while (curNode != null)
                {
                    if (curNode.data < newNode.data)
                    {

                    }
                }
            }
        }
    }

Ответы (0 шт):