2016-12-03 3 views
0

これはバイナリツリーを実装するためのコードです。プッシュ機能では、エラーが発生します.p-> rightのアドレスはroot-> rightとは異なります。私はpにrootの価値を割り当てました。誰かがそれを私に説明してください。バイナリツリーのプッシュ機能でエラーが発生しました

#include<iostream> 
using namespace std; 
struct node{ 
    int value; 
    node *right,*left; 
    node(int value){ 
     this->value=value; 
     right=NULL; 
     left=NULL; 
    } 
}; 
class tree{ 
    public: 
    node *root; 
     tree(){ 
      this->root=NULL; 
     } 
     tree(int value){ 
      root=new node(value); 
     } 
     void push(int value){ //To insert into the binary tree 
      if(root==NULL){ 
      root=new node(value); 
       return ; 
      } 
      node *p=this->root; 
      cout<<root<<endl<<p<<endl; 
      while(p!=NULL){ 
       if(value>=p->value){      
        p=p->right; 
       } 
       else if(value<p->value){      
        p=p->left; 
       } 
      } 
      p=new node(value); 
     } 
}; 
int main(){ 
    tree t(30); 
    t.push(20); 
} 

答えて

0
struct node{ 
int value; 
node *right,*left; 
node(int value){ 
    this->value=value; 
    this->right=NULL; 
    this->left=NULL; 
} 

左右の変数はポインタです。

+0

理解できません –

+0

ここのノードはオブジェクトです。あなたは左と右のポインタを割り当てていません。 – RJMIMI38

+0

私はそれらにNULLを割り当てました。私が必要とするときに、それらを特定の値に初期化します。 –

関連する問題