Miért bináris keresés fák?

szavazat
6

Olvastam bináris keresési fa alatt, és arra gondoltam, hogy miért van szükség BST egyáltalán? Minden dolog, mint amennyire én tudom is lehet elérni egyszerű kiválogatott tömbök. Pl - Annak érdekében, hogy építsenek egy BST amelynek n elem, amit igényel n*O(log n)időt, azaz O(nlog n)és keresési idő O(log n). De ez a dolog is lehet elérni a tömb. Mi lehet a rendezett tömbben (szükséges O(nlog n)idő), és keresési idő, hogy ez is O(log n), azaz bináris keresés algo. Akkor miért van szükségünk egy adatstruktúra egyáltalán? Vannak más felhasználási / alkalmazási BST amelyek lehetővé teszik számukra olyan különleges?

--Ravi

A kérdést 14/10/2010 16:28
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
4

Mit szólnál rendezve behelyezés idő?

Válaszolt 14/10/2010 16:30
a forrás felhasználó

szavazat
1

A grafikus programozás ha kiterjedt tárgy (azaz melyek egy intervallum minden dimenzióban, és nem csak egy pont) felveheti őket a legkisebb szinten egy bináris fa (tipikusan egy octree) a helyüket, teljesen.

És ha nem előre kiszámítani a fa / sortedlist az O (n) random beillesztés tartalmazó lista is megengedhetetlenül lassú. Beillesztés ideje egy fa másrészt csak O (log (n)).

Válaszolt 14/10/2010 16:36
a forrás felhasználó

szavazat
9

A tömbök jó, ha beszélünk, egyszer írható, többször olvasható alkalommal típusú kölcsönhatások. Ez, ha most az behelyezése, csere és törlés amelyben BST tényleg elkezd ragyogni képest egy tömbben. Mivel ők csomópont alapú, mint inkább egy folytonos darabkája memória, a költségek mozgó elemet sem a gyűjtemény, vagy ki a gyűjtemény gyors miközben továbbra is fenntartja a rendezett jellegét a gyűjtemény.

Gondolj rá úgy, mint a különbség a behelyezés közötti kapcsolt listák versus tömbök. Ez leegyszerűsítés, de rávilágít egy aspektusa az az előnye, amit fentebb.

Válaszolt 14/10/2010 16:53
a forrás felhasználó

szavazat
7

Képzeld el, hogy egy tömb millió elemekkel.

Beszúrni kívánt elemet a helyen, 5.

Így helyezze végén a tömböt, majd sort.

Tegyük fel, hogy a tömb teljes; ez O (n kapcsolódás n), amely 1.000.000 * 6 = 6.000.000 műveleteket.

Képzeld el, hogy egy kiegyensúlyozott fát.

Ez O (log n), plusz egy kicsit a kiegyensúlyozó = 6 + egy kicsit, hívják 10 műveleteket.

Szóval, épp most töltött 6.000.000 ops válogatás a tömb. Ezután akarja találni ezt az elemet. Mit csinálsz? bináris keresés - O (log n) - amely pontosan ugyanaz, mint, hogy mit fogsz csinálni, ha keresni a fán!

Most képzeljük el, szeretnénk lefoglalni -another- elem.

A tömb teljes! mit csinálsz? újraelosztása a tömb n extra elemeket és memcpy a tétel? szeretné memcpy 4mbytes?

Egy fa, csak egy újabb elem ...

Válaszolt 16/10/2010 10:14
a forrás felhasználó

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