Nu înțeleg acest binar de căutare arbore (BST) exemplu algoritmul

voturi
2

În codul de ștergere de aici .

Nu înțeleg primul fragment de cod de ștergere (în cazul în care nodul nu are doi copii).

În cazul în care nodul fiind șters are un părinte și un copil în sine (de exemplu, nodul are un copil) cum face acest lucru?

Codul este doar ștergerea nodului și nu stabilește indicii ale societății-mamă la copil acum orfani.

Am pierdut ceva?

Întrebat 12/04/2011 la 20:58
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

S-ar putea fi greșit, dar codul de pe site-ul de referință pare OK. Nu l-am testat, totuși.

Acest lucru este adevărat, pentru că funcția de ștergere ia un argument , care este de tip BSTNode ** nod. Acesta nu este un pointer la nodul. Acesta este un pointer la pointer nodului părintelui la nodul în sine . Acest lucru ar putea fi un pic neglijent, dar trebuie să recunosc , după realizarea ceea ce face codul, acesta este un elegant în soluția sa cale. Deci , atunci când rescrie (* nod), nu rescriu nodul în sine , în loc să te rescriu părinte al nodului de pointer la nodul . Efectiv codul este de a face ceea ce a sugerat într - o manieră ușor pervers: D. Sper ca ai inteles ce am vrut sa spun si sper ca am avut dreptate.

Mi - ar recomanda , de asemenea , să citiți mai multe despre copaci rosu-negru, deoarece acest articol oferă o perspectivă doar pentru a crea copac, dar structura descrisă nu are limite asimptotice pentru înălțimea sa. Dacă, de exemplu , vă împinge valori triate în această structură, acesta va fi o listă conectat în loc de un arbore echilibrat.


Publicat 12/04/2011 la 21:25
sursa de către utilizator

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