c ++二叉树帮助/ template

时间:2014-10-31 08:57:07

标签: c++ struct binary-tree return-type

我试图在c ++上创建一个二叉树类,并且迄今为止已成功实现了插入和树销毁方法。然而,我坚持并且老实说,完全失去了搜索功能。

具体而言,在尝试返回类的嵌套结构时,算法并不会让我感到困惑。

template<typename T>
class BinaryTree{
    struct TreeNode{
        T item;
        TreeNode *leftNode;
        TreeNode *rightNode;
    };
public:


    BinaryTree();
    ~BinaryTree();

    void insert(T x);
    void remove(T x);
    TreeNode *search(T x);

private:
    TreeNode *mainNode;
    void insert(T x, TreeNode *node);
    void destroyTree(TreeNode *x);
    TreeNode *search(T x, TreeNode *node);
};


//return pointer to seached object
template <typename T>
typename BinaryTree<T>::TreeNode BinaryTree<T>::*search(T x){
return search(x, mainNode);
}

template <typename T>
typename BinaryTree<T>::TreeNode BinaryTree<T>::*search(T x, BinaryTree<T>::TreeNode *node){
    /* problem here */
    return NULL;
}

我似乎无法在my * search方法的参数中设置*节点的类型。最初,我被困在返回类型上,但通过在返回类型上使用typename和resolution运算符找到了解决方案。 (即typename BinaryTree::)如果我错了,我真的很感激一些指导。

1 个答案:

答案 0 :(得分:0)

那将是:

template <typename T>
typename BinaryTree<T>::TreeNode* BinaryTree<T>::search(T x)
{
    ....
    return node;
}

您将星号放在错误的位置; - )