Сравнение двух T типов - C#
Формулировка задачи:
using System;
using System.Collections.Generic;
namespace Astral_LW10_1
{
class MyTree<T>
{
public class Node : IComparable<T>
{
public T Value { get; set; }
public Node True { get; set; }
public Node False { get; set; }
public Node(T _value)
{
Value = _value;
True = null;
False = null;
}
public Node(Node left, Node right, T value)
{
True = left;
False = right;
Value = value;
}
public int CompareTo(T other)
{
return -1;
}
}
public Node Root { get; private set; }
public MyTree(T _value)
{
Root = new Node(_value);
}
public void Add(Node _currentNode, T _valueTrue, T _valueFalse)
{
_currentNode.True = new Node(_valueTrue);
_currentNode.False = new Node(_valueFalse);
}
//создаем узел
public void Add(T value)
{
_add(Root, value);
}
private void _add(Node node, T value)
{
if (node == null)
{
node = new Node(null, null, value);
}
else
{
if (node.Value > value)
{
_add(node.True, value);
}
else
{
_add(node.False, value);
}
}
}
public List<T> list = new List<T>();
// вывод в консоль
public void Print()
{
RecursivPprint(Root);
}
private void RecursivPprint(Node node)
{
if (node == null) return;
//Console.WriteLine(node.Value);
list.Add(node.Value);
RecursivPprint(node.True);
RecursivPprint(node.False);
}
}
}
Оператор ">" невозможно применить к операнду типа "T" и "T".
Решение задачи: «Сравнение двух T типов»
textual
Листинг программы
class MyTree<T> : where T : IComparable<T>