Maison >développement back-end >Problème PHP >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 :
Les arbres binaires sont divisés dans les catégories suivantes :
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 :
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 :
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.
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 :
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!