문제

나는 전에 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 수업.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top