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