2010-07-22 243 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