Mi a probléma ezzel a funkcióval

szavazat
1

szia írtam BST és írt következő funkció hozzáadásával Child.

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

Adok 23 12 122 1 121 15, mint bemenet. Root node 23 amely hozok létre a kivitelező az osztályban.

Probléma: Amikor csinálok fa bejárás kapok csak a 23. és a 15. kimenet. Kérdés : Mit csinálok rosszul ebben a funkciót?

A kérdést 23/12/2010 10:42
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
1

Próbáld ki:

if(value > temp1->getValue()) 

... egyébként a behelyezés állapota eltér a keresést a helyszínen a hurok felett.

Válaszolt 23/12/2010 10:47
a forrás felhasználó

szavazat
1

A feltételek összekeverednek.

if (érték> TEMP-> getValue ()): Getright

az ellentétes

if (temp1-> getValue ()> érték): setRight

Próbáld csak a változó az utolsó feltétel.

Válaszolt 23/12/2010 10:47
a forrás felhasználó

szavazat
0

Egyetértek az előző választ kapitány és sje, de nem magyarázza a súlyos, mondjunk, underpopulation a fa. A lehetséges probléma az, hogy adjunk értéket , mint a gyermek TEMP1 , elöntve a korábbi gyermek teljesen. Ez talán történik T :: setRightChild () és a T :: setLeftChild () függvényt.

Válaszolt 23/12/2010 10:52
a forrás felhasználó

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