이것으로 이진 검색 트리를 만들 수 있습니까?
-
19-09-2019 - |
문제
나는 전에 BST를 만들었습니다. 이것을 사용하여 수정없이 BST를 만들 수 있습니까?
template <class Item>
class binary_tree_node
{
public:
private:
Item data_field;
binary_tree_node *left_ptr;
binary_tree_node *right_ptr;
};
나는 이것으로 BST를 만들려고 노력했지만 몇 가지 문제에 부딪쳤다. 우선 루트 노드를 만들 때 포인터에 자식 노드에 액세스 할 수 없습니다.
해결책
수정없이, no.
그러나 그 라인 '장소 공개 회원 기능'은 당신이 그것을 수정해야한다고 비명을 지르고 있습니다.
허가 문제에 대해 이야기하기 때문에 무료 기능을 사용하려고한다는 의미입니다. 그러나 포인터는 비공개이므로 접근 할 수 없습니다.
당신이해야 할 일은 멤버 기능을 만드는 것입니다. 예를 들어:
class binary_tree_node
{
public:
binary_tree_node()
{
}
bool is_item_in_tree(const Item &item)
{
}
...
};
어쨌든 가시성 및 OOP에 대한 C ++ 기본 사항을 검토하는 것이 좋습니다.
다른 팁
아니요, "여기에 공개 회원 기능을 배치"라는 클래스로 BST를 만들 수 없습니다.
예쁜 해킹 된 타입과 매크로가 없으면 컴파일하지 않습니다.
일반적으로 신규 비교 인터페이스를 제공해야합니다. Item
클래스, 삽입 및 제거 오피 션에서 비교가 필요합니다.
구체적인 정보는 제공되지 않았으므로 당신이 사용하는지 모르겠습니다. <
그리고 >
기타 관계 연산자이든 아니든 아니지만 사용하는 경우 새로 확인해야합니다. Item
클래스는이 연산자를 지원합니다.
하나의 일반적인 비교 클래스 이름을 추가하도록 조언합니다. Comp
에 대한 구성 인터페이스를 제공합니다 Item
수업.
제휴하지 않습니다 StackOverflow