0

テンプレート化されたバイナリ検索ツリーで特定のキーを持つ値を検索し、そのデータ値へのポインターを返す関数に取り組んでいます。指定されたキーがツリーに存在しない場合、返されるポインターは NULL を指す必要があります。これまでのところ、私は持っています:

template <typename Item, typename Key>
Item* BSTree<Item,Key>::search(const Key& key) const {
    Item* entry = NULL;
    Node* cursor = root;
    while(cursor != NULL) {
        if(key > cursor->data) 
            cursor = cursor->right;
        else if(key < cursor->data)
            cursor = cursor->left;
        else
            entry = cursor->data;
    }
    return entry;
}

しかし、実行しようとすると、アイテムからアイテムに変換できないというエラーが表示されます*。私は常にポインターに問題があり、これらのエラーを修正する方法がわかりません。

4

1 に答える 1

1

あなたの代わりにentry = cursor->data;明らかに必要entry = &(cursor->data);です。

また、アイテムを見つけたら、ツリーをたどって他のアイテムを探し続けるのではなく、すぐに返品したいと思うでしょう。

于 2012-12-05T04:28:03.973 に答える