Мне нужно запрограммировать функцию для лаборатории в двоичном дереве поиска для обхода. Моя проблема, я был дан интерфейс, который я должен следовать и в нем единственный параметр, я могу перейти к функции обхода является еще одной функцией ничтожной возвращаемого типа:Для обхода двоичного дерева поиска без указателя узла как параметра
void BinarySearchTree<ItemType, KeyType>::inorderTraverse(void visit(ItemType&)) const
Функция визит в основном функция что я буду определять для конкретного примера использования для дерева, например, я хочу распечатать дерево в порядке возрастания, и в этом случае функция, которую я передал бы функции inorderTraverse
, будет функцией печати. Я не могу понять, как пройти все дерево без указателя узла в качестве параметра. Я не прошу весь код, просто совет, который может указать мне в правильном направлении! Вот BinarySearchTree.h
:
template<typename ItemType, typename KeyType>
class BinarySearchTree
{
private:
BinaryNode<ItemType>* rootPtr;
// Recursively deletes all nodes from the tree.
void destroyTree(BinaryNode<ItemType>* subTreePtr);
// Recursively finds where the given node should be placed and
// inserts it in a leaf at that point.
BinaryNode<ItemType>* insertInorder(BinaryNode<ItemType>* subTreePtr,
BinaryNode<ItemType>* newNode);
// Returns a pointer to the node containing the given value,
// or nullptr if not found.
BinaryNode<ItemType>* findNode(BinaryNode<ItemType>* treePtr,
const KeyType& target) const;
public:
//------------------------------------------------------------
// Constructor and Destructor Section.
//------------------------------------------------------------
BinarySearchTree();
virtual ~BinarySearchTree();
//------------------------------------------------------------
// Public Methods Section.
//------------------------------------------------------------
bool add(const ItemType& newEntry);
ItemType getEntry(const KeyType& aKey) const throw(NotFoundException);
bool contains(const KeyType& aKey) const;
//------------------------------------------------------------
// Public Traversals Section.
//------------------------------------------------------------
void inorderTraverse(void visit(ItemType&)) const;
}; // end BinarySearchTree
#include "BinarySearchTree.cpp"
#endif
Вы могли бы найти это полезным: http://stackoverflow.com/questions/ 18413705/c-binary-tree-traverse-and-function-pointer-parameter? Rq = 1 –
Нет, это именно моя проблема, я не могу передать указатель на мою функцию, и поэтому я не могу понять, как для рекурсивного перемещения – pyro97
Вы хотите использовать рекурсию? –