Понятие в порядке - это просто понятие порядка.Вы также должны сказать, что должно быть сделано в этом порядке.Код, предоставленный вашим профессором, вызывает функцию visit
.
Это означает, что в вашей реализации вам также необходима такая функция посещения.Он может быть жестко закодирован (отображать узел на cout
) или лучше передаваться в качестве параметра.В этом случае вы должны объявить InOrder
как:
void InOrder(void (*visit)(const pair<K, E>&))const;
, а затем вызвать его (например, с помощью лямбда-функции) как:
BST<int, string> bst;
...
bst.InOrder([](const pair<int, string>&ke) {
cout << "K: " << ke.first << " -E: " << ke.second << "\n";
});
Возможная реализация, имитирующая вашего профессоракод может быть:
template<class K, class E>
void BST<K,E>::doInOrder(const TN* root, void (*visit)(const pair<K, E>&)) {
if (root) {
doInOrder(root->leftChild, visit);
visit(root->data);
doInOrder(root->rightChild, visit);
}
}
template<class K, class E>
void BST<K,E>::InOrder(void (*visit)(const pair<K, E>&))const {
doInOrder(root, visit);
}