


Comment implémenter un arbre binaire en php (exemple de code)
L'arbre binaire est une structure de données de base en informatique, c'est la structure arborescente la plus courante, telle que celle utilisée en informatique pour la recherche et le tri, et utilisée dans de nombreux autres domaines de l'informatique. PHP est un langage de script côté serveur largement utilisé qui prend en charge le développement Web dynamique. Dans cet article, nous présenterons comment implémenter un arbre binaire en utilisant PHP.
Qu'est-ce qu'un arbre binaire ?
Un arbre binaire est composé de plusieurs nœuds, chaque nœud a au plus deux nœuds enfants. Il possède trois attributs :
- Valeur du nœud
- Pointeur de sous-arbre gauche
- Pointeur de sous-arbre droit
Les arbres binaires sont divisés dans les catégories suivantes :
- Arbre binaire complet : à l'exception des nœuds feuilles, les autres nœuds ont deux nœuds enfants.
- Arbre binaire complet : si la profondeur de l'arbre binaire est d, à l'exception du niveau dième, tous les autres niveaux sont pleins, et au niveau dième, tous les nœuds feuilles sont à des positions consécutives sur la gauche
- Arbre de recherche binaire : sous-arbre gauche Tous les nœuds sont inférieurs à la valeur du nœud racine et toutes les valeurs des nœuds du sous-arbre droit sont supérieures à la valeur du nœud racine
Pour implémenter un arbre binaire
Nous pouvons utiliser des classes pour définir la structure de l'arbre binaire. Chaque nœud est un objet avec les propriétés suivantes :
- value : valeur du nœud
- gauche : pointeur de sous-arbre gauche
- droite : pointeur de sous-arbre droit
Créez une classe pour représenter le nœud.
class Node { public $value; public $left; public $right; function __construct($value){ $this -> value = $value; $this -> left = null; $this -> right = null; } }
Ensuite, nous devons créer une classe pour représenter l'arbre binaire.
class BinarySearchTree { public $root; function __construct() { $this -> root = null; } }
Ensuite, nous définirons les méthodes suivantes pour les arbres binaires :
- insert(value) : Insérer une valeur dans un arbre binaire
- search(value) : Rechercher une valeur dans un arbre binaire
- delete(value) : Supprimer une valeur d'un arbre binaire
Insérer un nœud
La méthode Insérer un nœud insérera le nouveau nœud au bon emplacement. Si l'arborescence est vide, le nouveau nœud est le nœud racine. Sinon, nous commençons à comparer la valeur du nœud actuel à partir du nœud racine.
- Si la valeur du nouveau nœud est inférieure à la valeur du nœud actuel, alors nous insérons le nouveau nœud dans le sous-arbre de gauche.
- Si la valeur du nouveau nœud est supérieure à la valeur du nœud actuel, alors nous insérons le nouveau nœud dans le sous-arbre de droite.
- Si la valeur du nouveau nœud est égale à la valeur du nœud actuel, le nœud existe déjà et n'a pas besoin d'être inséré.
Voici le code de la méthode d'insertion :
function insert($value) { $newNode = new Node($value); if ($this -> root == null) { $this -> root = $newNode; } else { $current = $this -> root; while (true) { if ($value < $current -> value) { if ($current -> left == null) { $current -> left = $newNode; return; } else { $current = $current -> left; } } else if ($value > $current -> value) { if ($current -> right == null) { $current -> right = $newNode; return; } else { $current = $current -> right; } } else { return; } } } }
Find Node
La méthode Find Node est une méthode récursive simple. Comparez les valeurs des nœuds en commençant par le nœud racine. Si les valeurs sont égales, renvoie le nœud actuel. Sinon, si la valeur du nœud est inférieure à la valeur que vous recherchez, continuez la recherche dans le sous-arbre de gauche. Si la valeur est supérieure à la valeur que vous recherchez, poursuivez la recherche dans le sous-arbre de droite.
Voici le code de la méthode find :
function search($value) { $current = $this -> root; while ($current != null) { if ($value == $current -> value) { return $current; } else if ($value < $current -> value) { $current = $current -> left; } else { $current = $current -> right; } } return null; }
Delete Node
La méthode delete node est l'une des méthodes les plus complexes de toute l'implémentation. La manière dont un nœud est supprimé dépend du nombre d’enfants du nœud. Il peut y avoir les situations suivantes :
- Le nœud est un nœud feuille et n'a pas de nœud enfant. Supprimez le nœud directement. Le nœud
- n’a qu’un seul nœud enfant. Remplacez les nœuds enfants par ce nœud. Le nœud
- a deux nœuds enfants. Recherchez la valeur minimale dans le sous-arbre droit du nœud, remplacez la valeur minimale par ce nœud et supprimez la valeur minimale du sous-arbre droit.
Voici le code de la méthode delete :
function delete($value) { $current = $this -> root; $parent = null; while ($current != null) { if ($value == $current -> value) { if ($current -> left == null && $current -> right == null) { if ($parent == null) { $this -> root = null; } else { if ($parent -> left == $current) { $parent -> left = null; } else { $parent -> right = null; } } } else if ($current -> left == null) { if ($parent == null) { $this -> root = $current -> right; } else { if ($parent -> left == $current) { $parent -> left = $current -> right; } else { $parent -> right = $current -> right; } } } else if ($current -> right == null) { if ($parent == null) { $this -> root = $current -> left; } else { if ($parent -> left == $current) { $parent -> left = $current -> left; } else { $parent -> right = $current -> left; } } } else { $replacementNode = $current -> right; while ($replacementNode -> left != null) { $replacementNode = $replacementNode -> left; } $removeValue = $replacementNode -> value; $this -> delete($replacementNode -> value); $current -> value = $removeValue; } return; } else if ($value < $current -> value) { $parent = $current; $current = $current -> left; } else { $parent = $current; $current = $current -> right; } } }
Conclusion
Maintenant, nous avons appris comment implémenter un arbre binaire en php. Les arbres binaires constituent une structure de données de base en informatique et de nombreux algorithmes et applications l'impliquent. Nous avons appris à insérer des nœuds, à rechercher des nœuds et à supprimer des nœuds. Nous pouvons également étendre cette classe pour implémenter d’autres méthodes pratiques.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La compilation JIT de PHP 8 améliore les performances en compilant le code fréquemment exécuté en code machine, bénéficiant aux applications avec des calculs lourds et en réduisant les temps d'exécution.

L'article traite de la sécurisation des téléchargements de fichiers PHP pour éviter les vulnérabilités comme l'injection de code. Il se concentre sur la validation du type de fichier, le stockage sécurisé et la gestion des erreurs pour améliorer la sécurité de l'application.

L'article traite des 10 meilleures vulnérabilités de l'OWASP dans les stratégies PHP et d'atténuation. Les problèmes clés incluent l'injection, l'authentification brisée et les XS, avec des outils recommandés pour surveiller et sécuriser les applications PHP.

L'article traite du cryptage symétrique et asymétrique en PHP, en comparant leur aptitude, leurs performances et leurs différences de sécurité. Le chiffrement symétrique est plus rapide et adapté aux données en vrac, tandis que l'asymétrique est utilisé pour l'échange de clés sécurisé.

L'article discute de la récupération des données des bases de données à l'aide de PHP, couvrant les étapes, les mesures de sécurité, les techniques d'optimisation et les erreurs communes avec des solutions. COMMANDE CHAPITRE: 159

L'article examine la mise en œuvre d'authentification et d'autorisation robustes dans PHP pour empêcher un accès non autorisé, détaillant les meilleures pratiques et recommandant des outils d'amélioration de la sécurité.

Les déclarations préparées dans PHP améliorent la sécurité et l'efficacité de la base de données en empêchant l'injection SQL et en améliorant les performances de la requête par compilation et réutilisation. Compilation de caractéristiques: 159

L'article traite des stratégies de mise en œuvre de la limitation du taux d'API en PHP, y compris des algorithmes comme un godet de jeton et un seau qui fuit, et en utilisant des bibliothèques comme Symfony / Rate-Limiter. Il couvre également la surveillance, l'ajustement dynamiquement des limites de taux et la main
