如果将display作为函数指针传递给函数inorder,我如何为字符串的二叉搜索树实现显示函数?
typedef void (*FunctionType)(TreeItemType& anItem);
void display(TreeItemType& anItem);
void BinarySearchTree::inorder(TreeNode *treePtr,
FunctionType visit)
{ if (treePtr != NULL)
{ inorder(treePtr->leftChildPtr, visit);
visit(treePtr->item);
inorder(treePtr->rightChildPtr, visit);
} // end if
} // end inorder
我试着写下这样的话:
cout << anItem;
在显示器的主体,但它不起作用。 TreeItemType是一个字符串,所以我需要重载&lt;&lt; operator或=运算符从TreeItemType转换为字符串?我研究了函数指针,无法弄清楚如何使用:
visit(treePtr->item);
显示树的项目(字符串)。
int main()
{
BinarySearchTree tree;
TreeItemType item = "20";
tree.searchTreeInsert(item);
tree.inorderTraverse(display); // call to inorderTraverse calls inorder
return 0; // indicates successful completion
} // end function main
void display(TreeItemType& anItem)
{
cout << anItem;
}
TreeItemType的定义:
typedef string TreeItemType;