Как реализовать функцию отображения для бинарного дерева поиска? - PullRequest
1 голос
/ 18 декабря 2010

Как реализовать функцию отображения для бинарного дерева поиска строк, если отображение передается как указатель функции на порядок функций?

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 является строкой, поэтому мне нужно перегрузить оператор << или оператор = для преобразования из TreeItemType в строку? Я исследовал указатели функций и не могу понять, как использовать: </p>

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...