2010-07-22 205 views
-3

我想实现二叉搜索树二叉搜索树

#include <iostream> 
    using namespace std; 
    class BST{ 
    private : 
      int v,*n,vn; 
      struct node{ 
       int val; 
       node *left,*right; 
       node(int i){ val=i; left=right=0;} 

      }; 

      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); 
      } 





    public : 
     BST(int maxlens,int maxval){ root=0; n=0;} 
     int size() { return n;} 
     void insert(int t){ root=rinsert(root,t);} 
     void report(int *x) {v=x; vn=0; traverse(root);} 

    }; 


    int main(){ 


      return 0; 
    } 

但是这个代码有一些错误,如果有人运行这段代码会看到这样的错误,请帮我什么是错误的代码?

+1

如果你想让其他人阅读此代码,你可以更好地格式化你的代码 – Svisstack 2010-07-22 09:53:45

+1

请提一下你的bug列表 – PHP 2010-07-22 09:53:55

+4

这不太可能每个人都花时间编译你的代码并测试它看看你的问题是什么。为什么不花时间说出你所观察到的?你会提高获得有用答案的机会。 – duffymo 2010-07-22 09:55:40

回答

1

v [vn ++] = p-> val;

vint(未整数数组),所以v[vn++]语法不正确。

也许你想在inorder遍历期间打印节点中的值。

+1

他将它们加载到他通过'report'传入的数组中。但是,“int v”需要是“int * v”。 – Rup 2010-07-22 10:03:22