2011-10-07 6 views
0

나는 다음과 같은 코드가 있습니다이진 트리 방법

#include <iostream> 

using namespace std; 

class BST{ 
public: 
    int n,*v,vn; 
    struct node { 
    int val; 
    node *left,*right; 
    node (int v){ val=v; left=right=0;} 
    void Print(node *p){ 
     cout<<p->val; 

     if (p->left){ 
      Print(p->left); 
     } 
     else if(p->right){ 
      Print(p->right); 
     } 
    } 
    }; node *root; 

    node *rinsert(node *p,int t){ 
    if (p==0){ 
     p=new node(t); 
     n++; 
    } 
    else if (t<p->val){ 
     p->left=rinsert(p->left,t); 
    } 
    else if (t>p->val){ 
     p->right=rinsert(p->right,t); 
    } 

    return p; 
    } 
    void traverse(node *p){ 

    if (p==0) return; 
    traverse(p->left); 
    v[vn++]=p->val; 
    traverse(p->right); 
    } 
    void print(){ 
    Print(root); 
    } 

public: 
    BST(int maxelms,int maxval){ 
     root=0; 
     n=0; 
    } 
    int size(){ 
     return n; 
    } 
    void insert(int v){ 
     root=rinsert(root,v); 
    } 
    void report(int *x){ 
     v=x; 
     vn=0; 
     traverse(root); 
    } 
}; 
int main(){ 
    BST bt(12,25); 
    bt.insert(12); 
    bt.insert(10); 
    bt.insert(25); 
    bt.insert(7); 
    bt.insert(11); 
    bt.insert(8); 
    bt.insert(4); 
    bt.insert(3); 
    bt.insert(20); 
    bt.insert(23); 
    bt.insert(24); 
    bt.insert(1); 

    return 0; 
} 

컴파일러는 Print()이 정의되지 있다고합니다. 왜? 나는 그것을 수업 시간에 선언했다.

+0

"print"함수는 구조체 이름을 지정하지 않고 "Print"함수에 액세스 할 수 없다고 생각합니다. –

+0

컴파일러 오류 메시지가 있으면 이해할 수 없습니다. ** 전체 오류 메시지를 질문에 넣으십시오. (그리고 소스 코드에 불만을 표시하십시오). –

답변

0
는 구조체 노드 정의 외부에서 "무효 인쇄 (노드 * P)"기능을 이동

0

무효 인쇄 (노드 * p를) { ->정적 무효 인쇄 (노드 * p를) {

다른

(P-> 오른쪽) { 경우 ->(P-> 오른쪽) {

인쇄 (루트)의 경우; ->node :: Print (루트);

0

당신은 두 가지 인쇄 방법이 있습니다

BST::node::Print(node* p); 
BST::print(); 

자본 Printnode 구조체의 일부입니다. print 소문자는 BST 클래스의 일부입니다. 발생할 수있는

문제 :

  • 는 클래스 외부 print 전화. 전화 : BST bt; bt.print();
  • node 클래스 외부에서 Print으로 전화해야합니다. node n; n.Print(&n);으로 전화해야합니다. 다소 어리석은 일입니다. node을 입력하면 Printnode 클래스에 속할 필요가 없습니다.
  • 전화 Print() - 그런 건 없습니다. print()Print(node*) - 대소 문자 문제.

질문에 답변이되지 않는 경우 추가 정보로 질문을 업데이트하십시오. 실제 컴파일러 오류를 복사하여 붙여넣고 어떤 행에서 오류가 발생했는지 나타냅니다.

+0

아니, 내가 unfortunatelfy –

+0

@ user466534, 그럼 당신의 오류 메시지를 게시하고 문제가 라인을 나타냅니다 도움이되지 않았다. 그렇지 않으면 우리는 당신을 도울 수 없습니다. – Tim