Pourquoi arbres binaires de recherche?

voix
6

Je lisais arbre de recherche binaire et je pensais que pourquoi avons-nous besoin BST du tout? Toutes les choses aussi loin que je sais peut aussi être réaliser en utilisant des tableaux simples triés. Par exemple - Afin de construire un BST ayant n éléments, nous exige du n*O(log n)temps -à- dire O(nlog n)et le temps de recherche est O(log n). Mais cette chose peut également atteindre en utilisant tableau. Nous pouvons avoir un tableau trié (nécessite du O(nlog n)temps), et le temps de recherche dans c'est aussi O(log n)iE recherche binaire algo. Alors pourquoi avons-nous besoin d'une autre structure de données du tout? Y a-t- il une autre utilisation / application de BST qui les rend si spécial?

--Ravi

Créé 14/10/2010 à 16:28
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
4

Que diriez-vous du temps d'insertion triés?

Créé 14/10/2010 à 16:30
source utilisateur

voix
1

Dans la programmation graphique si vous avez un objet étendu (ie qui représentent un intervalle dans chaque dimension et pas seulement un point), vous pouvez les ajouter au plus petit niveau d'un arbre binaire (généralement un octree) où ils se situent dans entièrement.

Et si vous ne précalculer l'arbre / SortedList le temps d'insertion aléatoire O (n) dans une liste peut être extrêmement lents. temps d'insertion dans un arbre d'autre part est seulement O (log (n)).

Créé 14/10/2010 à 16:36
source utilisateur

voix
9

Les tableaux sont très bien si vous parlez write once, read type d'interactions plusieurs fois. Il est quand vous descendez à l'insertion, l'échange et la suppression dans laquelle BST commence vraiment à briller par rapport à un tableau. Comme ils sont basés noeud, plutôt que sur un morceau contigu de mémoire, le coût de déplacement d'un élément, soit dans la collecte ou de la collection est rapide tout en conservant la nature de la collection triée.

Pensez-y comme vous le feriez la différence d'insertion entre les listes chaînées par rapport à des tableaux. Ceci est une simplification excessive, mais il met en évidence un aspect de l'avantage que je l'ai mentionné ci-dessus.

Créé 14/10/2010 à 16:53
source utilisateur

voix
7

Imaginez que vous avez un tableau avec un million d'éléments.

Vous souhaitez insérer un élément à l'emplacement 5.

Donc, vous insérez à la fin du tableau et puis trier.

Disons que le tableau est complet; qui est O (nlog n), qui est 1,000,000 * 6 = 6.000.000 opérations.

Imaginez que vous avez un arbre équilibré.

C'est O (log n), plus un peu pour l'équilibrage = 6 + un peu, appelez 10 opérations.

Alors, vous venez de passer 6.000.000 opérations de tri votre tableau. Vous souhaitez ensuite trouver cet élément. Que faire? recherche binaire - O (log n) - qui est exactement la même chose que ce que vous allez faire quand vous effectuez une recherche dans l'arbre!

Maintenant, imaginez que vous souhaitez allouer élément -another-.

Votre tableau est complet! Que faire? re-répartir le tableau avec n éléments supplémentaires et memcpy le lot? vous voulez vraiment memcpy 4mbytes?

Dans un arbre, vous ajoutez juste un autre élément ...

Créé 16/10/2010 à 10:14
source utilisateur

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