Я смотрю на различные реализации деревьев AVL, в частности, функцию для обхода дерева. Я сталкивался с различными методами для достижения этой цели, однако есть один, который я не понимаю.
template <class TYPE, class KTYPE>
void AvlTree<TYPE, KTYPE>
:: AVL_Traverse (void (*process)(TYPE dataProc))
{
// Statements
_traversal (process, tree);
return;
} // end AVL_Traverse
/* ===================== _traversal =====================
Traverse tree using inorder traversal. To process a
node, we use the function passed when traversal is called.
Pre tree has been created (may be null)
Post all nodes processed
*/
template <class TYPE, class KTYPE>
void AvlTree<TYPE, KTYPE>
:: _traversal (void(*process)(TYPE dataproc),
NODE<TYPE> *root)
{
// Statements
if (root)
{
_traversal (process, root->left);
process (root->data);
_traversal (process, root->right);
} // if
return;
} // _traversal
в частности, в приведенном выше коде кто-то может помочь мне понять, что это значит и что он делает
AVL_Traverse (void (*process)(TYPE dataProc))
Я не понимаю, что означает эта часть
AVL_Traverse (void (* process)
для чего используется процесс указателя?