2015-08-25 8 views
0

je suis tombé sur une question d'entrevue qui stipule: Comment vous représenter les lettres A, B, C, D, E, F et G dans un ordre de tri en utilisant une représentation arborescente binaire?Trier lettres de l'alphabet en utilisant un arbre binaire

Je suis vraiment perplexe. Si nous prenons G pour être la racine de l'arbre, alors l'enfant de gauche aurait E et l'enfant de droite serait F de sorte que le sous-arbre de droite soit "plus grand que" le sous-arbre de gauche. Ensuite, pour le noeud E, son enfant à gauche serait A et l'enfant à droite B et l'enfant à gauche de F serait C et son enfant à droite serait D.

Est-ce correct ou quelqu'un d'autre a-t-il une réponse différente?

+0

Vous devriez regarder probablement ce « tri ordre » signifie. Astuce: Si G est la racine, il n'aura pas un enfant droit. – Sneftel

Répondre

3

L'arborescence binaire que vous avez décrite est Binary heap, généralement utilisée pour implémenter la file d'attente de priorité.

Utilisez à la place Binary search tree, qui conserve les clés dans un ordre trié.

2

Si vous utilisez les lettres de A à G comme ensemble complet, l'arbre binaire trié ressemblerait à ceci:

 D 
    B  F 
A C E G 
+0

C'est bon! Bon endroit. – Sterls

+1

Si vous recherchez la construction d'un arbre binaire complet (ou d'un tas binaire) comme indiqué par @Yu, tous les sous-arbres sont pleins. Cela signifie qu'il faudra du temps de log (n) pour rechercher ce que vous recherchez (où n = nombre de nœuds). Lorsque vous construisez l'arbre, en prenant les nœuds de A à G comme ils viennent, D va émerger la racine de l'arbre car cela permet à tous les autres nœuds de former des sous-arbres binaires complets. – Sterls