Bu işlevle sorun nedir

oy
1

selam ben BST yazıyordum ve Çocuk eklemek için işlev aşağıdaki yazdı.

void addChild(T value)  
{  
  temp = root;  
  while(0 != temp)  
  {  
     temp1 = temp;  
     if(value  > temp->getValue())  
          temp = temp->getRightChild();   
      else  
           temp = temp->getLeftChild();  
  }  
  if(temp1->getValue() > value)  
  {   
       temp1->setRightChild(new Child(value));  
  }  
  else  
  {  
       temp1->setLeftChild(new Child(value));  
  }  
}  

Ben girdi olarak 23 12 122 1 121 15 veriyorum. Kök I sınıfı yapıcısında oluşturma düğüm 23'tür.

Sorun: i ağaç gezinme yapıyorum zaman ben sadece 23 ve 15 çıktı olarak alıyorum. Soru : ben bu işlevde yanlış ne yapıyorum?

Oluştur 23/12/2010 saat 10:42
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
1

Deneyin:

if(value > temp1->getValue()) 

... aksi taktirde yerleştirme durum yukarıda döngü içinde bir nokta için aramanız farklıdır.

Cevap 23/12/2010 saat 10:47
kaynak kullanıcı

oy
1

koşullar karışık.

Eğer (değer> TEMP> getValue ()): getright

tersi olan

(Temp1-> getValue ()> değeri) ise: setRight

Sadece son şartını değiştirmeyi deneyin.

Cevap 23/12/2010 saat 10:47
kaynak kullanıcı

oy
0

Kaptan ve SJE önceki cevapları kabul ederler, fakat biz demeliyim, senin ağacının underpopulation şiddetli açıklamaz. Olası sorun eklemek olmasıdır değeri bir çocuk olarak temp1 tamamen önceki çocuğu atarak,. Muhtemelen T yapılır :: setRightChild () ve T :: setLeftChild () işlevlerini.

Cevap 23/12/2010 saat 10:52
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more