2011-10-07 131 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

我認爲在功能「打印」功能「打印」不能訪問沒有給結構名稱。 – 2011-10-07 16:42:24

+0

如果你有一個你不明白的編譯器錯誤信息,**把整個錯誤信息放到你的問題**中(並且在源代碼中指出它抱怨的那一行)。 –

回答

0

移動你的 「無效打印(節點* P)」 函數的結構節點定義之外

0

無效打印(節點* P){ - >靜態無效打印(節點* P){

否則如果(對 - >右){ - >如果(對 - >右){

打印(根); - >node :: Print(root);

0

你有兩個打印方法:

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

資本Printnode結構的一部分。小寫printBST類的一部分。

問題,你可能會遇到:

  • 調用print類外。您需要致電:BST bt; bt.print();
  • 致電Print以外的node類。你需要撥打node n; n.Print(&n);這會有點愚蠢。如果需要node,則不需要Print成爲node課程的一部分。
  • 致電Print() - 沒有這樣的事情。有print()Print(node*) - 大小寫問題。

如果這樣不能回答您的問題,請更新您的問題並提供更多信息。複製並粘貼實際的編譯器錯誤,並指出哪一行可爲您提供錯誤。

+0

不,它並沒有幫助我不幸的人 –

+0

@ user466534,然後發佈您的錯誤消息,並指出問題行。否則,我們無法幫助你。 – Tim