그래서 이진 트리를 만드는 코드를 만들고 싶습니다. 예를 들어 ints가 1,6,2,10,8와 같은 데이터를 보유하고 있고 팝업에서 가장 큰 값을 얻습니다. 번호, 그리고 그 후에 나무에서 삭제되면, 그리고 푸시에 나는 새로운 요소를 삽입 할 수 있습니다. 그리고 이것은 템플릿에 있어야하므로 트리에서 유지하고자하는 데이터 유형을 쉽게 변경할 수 있습니다. 이제는 템플릿을 사용하지 않고 템플릿을 사용하여 항목을 추가하고 인쇄 할 수 있지만 템플리트에 넣으려고하면 다음 오류가 발생합니다. 클래스 템플리트 사용에는 템플리트가 필요합니다. 인수 목록. 무엇이 문제 일 수 있습니까? 어쩌면 나는 그것을 완전히 잘못하고있다. 어떤 제안이라도 환영합니다.우선 순위 큐로 템플릿의 이진 트리 사용
이것은 avakar ty가 고쳐 준 첫 번째 질문이었습니다. (내 질문의 끝 부분에 코드를 게시 할 것입니다)
그냥 물마루 프로젝트 요청을 읽고, 그 같은, 내가 질문을 첫 번째 부분에서 설명한이 위의 만들 필요가 있지만 그 바이너리처럼 트리는 우선 순위 대기열을 나타내야합니다. 그래서 요청에서 우선 순위에 따라 트리에 새 요소를 넣고 팝업을 사용하여 우선 순위가 가장 높은 요소를 가져온 다음 요소를 삭제해야합니다. 그럼 어떻게 우선 순위 대기열로 내 나무를 사용할 수 있습니까, 아니면 이미 하나입니까 (나는 생각하지만 누가 알았지?)? 내가 설명 할 수 있었으면 좋겠어.
#include <iostream>
using namespace std;
template<class T>
class BinaryTree
{
struct Node
{
T data;
Node* lChildptr;
Node* rChildptr;
Node(T dataNew)
{
data = dataNew;
lChildptr = NULL;
rChildptr = NULL;
}
};
private:
Node* root;
void Insert(T newData, Node* &theRoot)
{
if(theRoot == NULL)
{
theRoot = new Node(newData);
return;
}
if(newData < theRoot->data)
Insert(newData, theRoot->lChildptr);
else
Insert(newData, theRoot->rChildptr);;
}
void PrintTree(Node* theRoot)
{
if(theRoot != NULL)
{
PrintTree(theRoot->lChildptr);
cout<< theRoot->data<<" ";;
PrintTree(theRoot->rChildptr);
}
}
public:
BinaryTree()
{
root = NULL;
}
void AddItem(T newData)
{
Insert(newData, root);
}
void PrintTree()
{
PrintTree(root);
}
};
int main()
{
BinaryTree<int> *myBT = new BinaryTree<int>();
myBT->AddItem(1);
myBT->AddItem(7);
myBT->AddItem(1);
myBT->AddItem(10);
myBT->AddItem(4);
myBT->PrintTree();
}
죄송합니다.이 질문을 끝내기로했습니다. 우선 순위 큐로 BST에 관한 코드 또는 질문과 관련된 * 특정 * 문제를 다시 게시하십시오. –
흠 ... C++ 표준 라이브러리는 우선 순위 큐를 트리가 아닌 * 힙 *으로 구현합니다. 나무가 루트 노드가 아닌 리프 노드에 극단적 인 요소를 가지고 있지만 자체 균형 조정 트리도 같은 목적을 수행 할 수 있다고 가정합니다. –