Maison  >  Article  >  Il existe plusieurs façons d'implémenter un arbre de recherche binaire

Il existe plusieurs façons d'implémenter un arbre de recherche binaire

藏色散人
藏色散人original
2020-07-02 09:26:152389parcourir

Une façon d'implémenter un arbre de recherche binaire consiste à utiliser une liste chaînée. Une liste chaînée est une structure de stockage non continue et non séquentielle sur une unité de stockage physique. L'ordre logique des éléments de données est lié via. pointeurs dans la liste chaînée. Elle est implémentée de manière séquentielle, et la liste chaînée est composée d'une série de nœuds, et les nœuds peuvent être générés dynamiquement au moment de l'exécution.

Il existe plusieurs façons d'implémenter un arbre de recherche binaire

Arbre de recherche binaire

L'arbre de recherche binaire est une paire d'arbres binaires spéciaux

qui est utile pour le tri et la recherche est défini comme : sous-arbre gauche < nœud racine < sous-arbre droit

méthode d'implémentation : généralement une liste chaînée est utilisée pour implémenter l'ensemble d'opérations

: Créer un arbre binaire, déterminer s'il est vide, parcourir, rechercher, trouver le plus petit élément, trouver le plus grand élément, insérer, supprimer

Complexité temporelle : meilleureO(logN) pireO(N)

Introduction connexe :

Une liste chaînée est une structure de stockage non continue et non séquentielle sur une unité de stockage physique. L'ordre logique des éléments de données est réalisé via l'ordre des liens du pointeur dans la liste chaînée. Une liste chaînée se compose d'une série de nœuds (chaque élément de la liste chaînée est appelé un nœud) et les nœuds peuvent être générés dynamiquement au moment de l'exécution. Chaque nœud se compose de deux parties : l'une est le champ de données qui stocke les éléments de données et l'autre est le champ de pointeur qui stocke l'adresse du nœud suivant. Par rapport à la structure de séquence de tableaux linéaires, l'opération est compliquée. Puisqu'il n'est pas nécessaire de la stocker dans l'ordre, la liste chaînée peut atteindre une complexité O(1) lors de l'insertion, ce qui est beaucoup plus rapide qu'une autre liste linéaire, une liste séquentielle, mais trouver un nœud ou accéder à un nœud numéroté spécifique nécessite O(n ) le temps, et les complexités temporelles correspondantes des tableaux linéaires et des tableaux séquentiels sont respectivement O(logn) et O(1).

L'utilisation de la structure de liste chaînée peut surmonter l'inconvénient de la liste chaînée de tableau selon laquelle la taille des données doit être connue à l'avance. La structure de liste chaînée peut utiliser pleinement l'espace mémoire de l'ordinateur et réaliser une gestion dynamique flexible de la mémoire. Cependant, la liste chaînée perd l'avantage de la lecture aléatoire du tableau. Dans le même temps, la liste chaînée a une surcharge d'espace relativement importante en raison de l'augmentation du champ de pointeur du nœud. L'avantage le plus évident d'une liste chaînée est que la façon dont un tableau régulier organise les éléments associés peut être différente de l'ordre dans lequel ces éléments de données sont organisés en mémoire ou sur le disque, et l'accès aux données nécessite souvent de basculer entre différentes dispositions. Les listes chaînées permettent l'insertion et la suppression de nœuds à n'importe quel emplacement de la liste, mais n'autorisent pas un accès aléatoire. Il existe de nombreux types de listes chaînées : les listes chaînées unidirectionnelles, les listes chaînées doublement et les listes chaînées circulaires. Les listes chaînées peuvent être implémentées dans une variété de langages de programmation. Les types de données intégrés de langages comme Lisp et Scheme incluent l'accès et le fonctionnement des listes chaînées. Les langages de programmation ou orientés objet tels que C, C++ et Java s'appuient sur des outils mutables pour générer des listes chaînées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn