template <class T>
void BT<T>::inOrder(void (*inOrderPtr)(T&))
{
inOrderPtr(inOrder(this->root));
}
template <class T>
void BT<T>::inOrder(Node<T>* root) const
{
if (root->left != NULL)
inOrder(root->left);
//something here
if (root->right != NULL)
inOrder(root->right);
}
Хорошо, я пытаюсь создать этот обход через рекурсию. Я действительно опубликовал эту проблему раньше, но я ошибся, потому что мне пришлось использовать указатель на функцию. Я не понимаю, что я должен делать. У меня есть общедоступная оболочка, которая вызывает частную ... но общественная - это та, у которой передается функция, и что мне с ней делать? Я чувствую отсталость, поэтому, даже если кто-то даст мне небольшой намек, я уверен, что получу его. Я просто не знаю, куда идти отсюда.C++ рекурсивные обходы с указателями функций
пример кода, который обращается к нему так:
first.inOrder(print_val)
Подождите, почему мне нужно получить T &? Мне сказали, что для этого мне понадобится только Public Wrapper и частная рекурсивная функция. Поэтому я не совсем уверен, что должен делать GetNodeType. – Doug 2008-10-16 03:34:35