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

+1

, пожалуйста, укажите свой список ошибок. – PHP

+4

. Вероятно, что каждый найдет время, чтобы скомпилировать ваш код и проверить его, чтобы узнать, , Почему бы не потратить время, чтобы сказать то, что вы наблюдали? Вы улучшите свои шансы получить полезный ответ. – duffymo

ответ

1

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

v является int (не массив целых чисел), так что v[vn++] синтаксически неправильно.

Возможно, вы захотели напечатать значение в узле во время обхода порядка.

+1

Он загружает их в массив, через который он проходит через 'отчет'. Но да, 'int v' должен быть' int * v'. – Rup

Смежные вопросы