二叉树的中序遍历

template <class Entry>
void Binary_tree<Entry> :: recursive_inorder (
Binary_node<Entry> *sub_root, void ( *visit )( Entry & ))
/* Pre: sub root is either NULL or points to a subtree of the Binary tree.
Post: The subtree has been traversed in inorder sequence.
Uses: The function recursive_inorder recursively */
{
if ( sub_root != NULL ) {
recursive_inorder ( sub_root->left, visit );
( *visit ) ( sub_root->data );
recursive_inorder ( sub_root->right, visit );
}
}
那位高手能告诉我第二个形参是什么东西,还有 ( *visit ) ( sub_root->data );
这行。

第二个形参是个函数指针,要遍历二叉树总得有个函数来访问元素吧……就通过函数指针的形式把它传了进来。于是就像一般函数调用一样,用传进来的函数来访问sub_root->data(即后面你问的那行)。比如说你要通过某个返回void、参数为Entry的打印函数print()来遍历元素,那就调用recursive_inorder(root, print),这样在遍历到某元素的时候就调用了print(sub_root->data)来打印该元素的值;
你这段代码应该是Kruse《数据结构与程序设计C++版》里的内容……
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-23
相似回答