De ce binar Copaci de căutare?

voturi
6

Citeam arbore binar de căutare și se gândesc că de ce avem nevoie de BST , la toate? Toate lucrurile în măsura în care știu pot fi , de asemenea , realiza folosind matrici triate simple. De exemplu - Pentru a construi o BST având n elemente, avem nevoie de n*O(log n)timp și anume O(nlog n)și timpul de căutare este O(log n). Dar acest lucru poate fi , de asemenea , realiza folosind matrice. Putem avea un tablou sortat (necesita O(nlog n)timp), și timpul de căutare în care este , de asemenea , O(log n)adică binar algo de căutare. Atunci de ce avem nevoie de o altă structură de date , la toate? Există orice altă utilizare / aplicare a BST care le face atât de special?

--Ravi

Întrebat 14/10/2010 la 16:28
sursa de către utilizator
În alte limbi...                            


4 răspunsuri

voturi
4

Ce-ar fi timpul de inserare sortate?

Publicat 14/10/2010 la 16:30
sursa de către utilizator

voturi
1

În programarea grafică dacă ați extins obiect (de exemplu, care reprezintă un interval în fiecare dimensiune și nu doar un punct) pe care le puteți adăuga la cel mai mic nivel al unui arbore binar (de obicei, un octree) în cazul în care acestea se încadrează în întregime.

Și dacă nu precalculați copac / sortedlist O (n) timp de inserare aleatorie într-o listă poate fi prohibitiv lent. timpul de inserare într-un copac, pe de altă parte, este doar O (log (n)).

Publicat 14/10/2010 la 16:36
sursa de către utilizator

voturi
9

Matricele sunt mari, dacă vorbești despre a scrie o dată, citit de multe ori tipul de interacțiuni. Este atunci când ajungi la inserarea, schimbarea și ștergerea în care BST începe într-adevăr să strălucească în comparație cu o matrice. Din moment ce acestea sunt bazate pe nod, mai degrabă decât bazate pe o bucată contiguu de memorie, costul deplasarea unui element, fie în colectarea sau în afara colecției este rapid păstrând în același timp caracterul sortat al colecției.

Ganditi-va ca v-ar diferența de inserție între listele legate comparativ cu matrice. Aceasta este o suprasimplificare, dar scoate în evidență un aspect al avantajului am menționat mai sus.

Publicat 14/10/2010 la 16:53
sursa de către utilizator

voturi
7

Imaginați-vă că aveți un tablou cu un milion de elemente.

Doriți să inserați un element la locația 5.

Deci, inserați la sfârșitul șirului și apoi sortați.

Să presupunem că matrice este plin; e O (Nlog n), care este de 1.000.000 * 6 = 6.000.000 operațiuni.

Imaginați-vă că aveți un arbore echilibrat.

Asta este O (log n), plus un bit de echilibrare = 6 + un pic, numesc 10 operațiuni.

Deci, tocmai ai cheltuit 6.000.000 ops de sortare matrice dumneavoastră. Atunci va dori să găsească acel element. Ce faci? binar de căutare - O (log n) - care este exact la fel ca ceea ce ai de gând să faci când căuta în copac!

Acum imaginați-vă că doriți să alocați elementul -another-.

matrice este plin! ce faci? Relocarea matrice cu elemente suplimentare n și memcpy lotul? într-adevăr doriți să memcpy 4mbytes?

Într-un copac, trebuie doar să adăugați un alt element ...

Publicat 16/10/2010 la 10:14
sursa de către utilizator

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