C++ 在C+中实现具有添加和删除节点功能的模板二叉搜索树+;
我创建了一个带有函数的bst类,但现在我想让它与模板一起工作。这是我迄今为止添加节点的代码,它不起作用C++ 在C+中实现具有添加和删除节点功能的模板二叉搜索树+;,c++,templates,tree,binary-tree,binary-search-tree,C++,Templates,Tree,Binary Tree,Binary Search Tree,我创建了一个带有函数的bst类,但现在我想让它与模板一起工作。这是我迄今为止添加节点的代码,它不起作用 template <typename T> void Tree<T>::addNode(Node<T>*& movingPtr, T newItem) { if (movingPtr == NULL) { movingPtr = new Node; movingPtr -> data = new
template <typename T>
void Tree<T>::addNode(Node<T>*& movingPtr, T newItem)
{
if (movingPtr == NULL)
{
movingPtr = new Node;
movingPtr -> data = newItem;
movingPtr -> prev = NULL;
movingPtr -> next = NULL;
}
else
{
if (movingPtr -> data > newItem)
addNode(movingPtr -> prev, newItem);
else
addNode(movingPtr -> next, newItem);
}
}
模板
void树::addNode(节点*&movingPtr,T newItem)
{
if(movingPtr==NULL)
{
movingPtr=新节点;
movingPtr->data=newItem;
movingPtr->prev=NULL;
movingPtr->next=NULL;
}
其他的
{
如果(移动PTR->数据>新建项目)
addNode(movingPtr->prev,newItem);
其他的
addNode(movingPtr->next,newItem);
}
}
如果有人知道我在哪里可以找到实现的模板类,请告诉我。我犯了什么错误?我知道模板的基础知识,但是关于更高级的模板使用的信息很少,这些信息清楚地解释了如何实现模板类和函数。(1)节点应该是模板
template <typename T>
struct Node
{
T data;
Node *prev;
Node *next;
};
模板
结构体类型
{
T数据;
节点*prev;
节点*下一步;
};
(2) 类应该是模板类
template <typename T>
class Tree{
public:
void addNode(Node<T>*& movingPtr, T newItem);
};
模板
类树{
公众:
void addNode(Node*&movingPtr,T newItem);
};
(3) 使用模板类型创建节点
movingPtr = new Node<T>;
movingPtr=新节点;
您可以尝试下面的整个测试代码:
template <typename T>
struct Node
{
T data;
Node *prev;
Node *next;
};
template <typename T>
class Tree{
public:
void addNode(Node<T>*& movingPtr, T newItem);
};
template <typename T>
void Tree<T>::addNode(Node<T>*& movingPtr, T newItem)
{
if (movingPtr == NULL)
{
movingPtr = new Node<T>;
movingPtr->data = newItem;
movingPtr->prev = NULL;
movingPtr->next = NULL;
}
else
{
if (movingPtr->data > newItem)
addNode(movingPtr->prev, newItem);
else
addNode(movingPtr->next, newItem);
}
}
int main()
{
Node<int> *n1 = new Node<int>();
n1->data = 2;
Tree<int> t;
t.addNode(n1, 1);
t.addNode(n1, 3);
return 0;
}
模板
结构体类型
{
T数据;
节点*prev;
节点*下一步;
};
模板
类树{
公众:
void addNode(Node*&movingPtr,T newItem);
};
模板
void树::addNode(节点*&movingPtr,T newItem)
{
if(movingPtr==NULL)
{
movingPtr=新节点;
movingPtr->data=newItem;
movingPtr->prev=NULL;
movingPtr->next=NULL;
}
其他的
{
如果(移动PTR->数据>新建项目)
addNode(movingPtr->prev,newItem);
其他的
addNode(movingPtr->next,newItem);
}
}
int main()
{
Node*n1=新节点();
n1->data=2;
树t;
t、 addNode(n1,1);
t、 addNode(n1,3);
返回0;
}