내 프로그램에 힙을 구현하려고했습니다. 힙은 이진 트리와 같습니다. 최소 힙과 최대 힙과 같은 모든 힙이이 경우입니까?이 작업은 트리에서 최대/최소 노드를 맨 위에 놓는 것입니다.C++ 데이터 구조 힙
또한 1 차원 배열을 사용하면 완전한 이진 트리가있는 경우에만 유용하다는 것을 알았습니다. 완전한 이진 트리가 없다면, 친구 클래스 인 클래스를 다른 클래스에 사용하는 것이 더 유리할 것입니다. 왜 그런가요? 예 :
template<class T> class BT; // forward declartion -> added at edit
template<class T>
class BTNode{
friend class BT<T>; // not sure why we need two classes
private:
T data;
BTNode<T> *leftChild; // what is the benefit of making a object Node?
BTNode<T> *rightChild;
};
template<class T>
class BT{
private:
BTNode<T> *root; // what is the benefit of having this root in another class?
};
감사합니다.
이것은'std :: priority_queue'와 같은 컨테이너에서 사용되는 것으로, ** heap **이라고합니다. – Aesthete
@Aesthete : nit-picking, 알아. '힙 (heap) '은 구체적인 데이터 구조입니다. '우선 순위 큐 (priority queue)'는 힙 (heap)으로 구현 될 수있는 추상 데이터 유형 (즉, 인터페이스)뿐만 아니라 다른 방식으로도 구현 될 수있다. 'std :: priority_queue'는 컨테이너가 아닌 컨테이너 어댑터입니다. – rici
이것은 기본 구현이며 의미 론적 단정 짓기는 이미 제거 된 이전 주석에 대한 것입니다. – Aesthete