如何实现二叉搜索树的显示功能?

时间:2010-12-18 05:51:22

标签: visual-c++ binary-tree function-pointers

如果将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;

0 个答案:

没有答案