Поскольку бинарное дерево поиска означает, что левый дочерний элемент меньше, чем узел, правый дочерний объект больше или равен узлу.
Я думаю, что вам нужно будет найти только самый правый дочерний элемент, чтобы найти самый большой узел.
В любом случае, у вас есть 2 версии BinaryTree :: Largest, одна из которых принимает 0 аргументов, а другая - 2 аргумента.
В void BinaryTree :: Largest () вы вызываете Largest (root), но там нет Largest, который принимает только один аргумент.Возможно, вы намеревались передать один из объектов шаблона в?
Другая проблема, которую я вижу, состоит в том, что другая функция Largest возвращает void, а не число, и использует объект шаблона (max), как если бы это была функция, когдаэто не (это int в вашем примере).Позже вы возвращаете шаблон, когда объявленная функция возвращает void.
Я бы порекомендовал вам изменить Largest, чтобы он возвращал шаблон вместо void.
T Largest( Node* theRoot)//<-- Notice returning of the template, not void
{
if ( theRoot == null )
return -1;
T left = Largest(theRoot->lChildptr);
T right = Largest ( theRoot->rChildptr);
if( theRoot->data > left && theRoot->data > right )
return theRoot->data;
else if (left < right)//<-- max was not a function, manual compare
return right;
else
return left;
}//<--You were missing a "}" here too
//...
T Largest()
{
return Largest(root);
}