Créez des structures de données d'arborescence de recherche avancées avec PHP

王林
Libérer: 2024-05-07 14:45:02
original
406 Les gens l'ont consulté

Construire des arbres de recherche avancés à l'aide de PHP implique de créer des classes de nœuds (Node) et des classes d'arbres de recherche (SearchTree), ainsi que de mettre en œuvre des méthodes d'insertion, de recherche et de suppression d'éléments. Les éléments sont stockés dans un arbre binaire en complexité temporelle logarithmique, chaque nœud contenant une valeur et des liens vers ses sous-arbres gauche et droit. En pratique, vous pouvez créer un arbre de recherche et insérer des éléments, rechercher des valeurs spécifiques ou même supprimer des éléments de l'arbre.

用 PHP 构建先进的搜索树数据结构

Créer une structure de données d'arborescence de recherche avancée à l'aide de PHP

L'arbre de recherche est une structure de données efficace qui permet de rechercher, d'insérer et de supprimer des éléments dans une complexité temporelle logarithmique. Cet article vous guidera dans la création d'un arbre de recherche avancé à l'aide de PHP.

1. Créez une classe de nœuds

Tout d'abord, créez une classe nommée Node pour représenter les nœuds dans l'arborescence : Node 的类来表示树中的节点:

class Node {
    public $value;
    public $left;
    public $right;

    public function __construct($value) {
        $this->value = $value;
        $this->left = null;
        $this->right = null;
    }
}
Copier après la connexion

2. 创建搜索树类

接下来,创建一个名为 SearchTree

class SearchTree {
    private $root;

    public function __construct() {
        $this->root = null;
    }

    // 其他方法(见下文)
}
Copier après la connexion

2. Créez une classe d'arbre de recherche

Ensuite, Créez une classe appelée SearchTree pour représenter l'arbre de recherche lui-même :

public function insert($value) {
    if ($this->root === null) {
        $this->root = new Node($value);
    } else {
        $this->_insert($value, $this->root);
    }
}

private function _insert($value, $node) {
    if ($value < $node->value) {
        if ($node->left === null) {
            $node->left = new Node($value);
        } else {
            $this->_insert($value, $node->left);
        }
    } else {
        if ($node->right === null) {
            $node->right = new Node($value);
        } else {
            $this->_insert($value, $node->right);
        }
    }
}
Copier après la connexion

3. Insérer des éléments

Pour insérer un nouvel élément, utilisez la méthode suivante :

public function find($value) {
    if ($this->root === null) {
        return null;
    } else {
        return $this->_find($value, $this->root);
    }
}

private function _find($value, $node) {
    if ($value === $node->value) {
        return $node;
    } elseif ($value < $node->value) {
        if ($node->left === null) {
            return null;
        } else {
            return $this->_find($value, $node->left);
        }
    } else {
        if ($node->right === null) {
            return null;
        } else {
            return $this->_find($value, $node->right);
        }
    }
}
Copier après la connexion

4. Pour rechercher un élément, vous pouvez utiliser la méthode suivante :

public function delete($value) {
    if ($this->root === null) {
        return;
    } else {
        $this->root = $this->_delete($value, $this->root);
    }
}

private function _delete($value, $node) {
    // ...
}
Copier après la connexion

5. Supprimer un élément

Pour supprimer un élément, vous pouvez utiliser la méthode suivante (il s'agit d'un processus récursif, l'implémentation spécifique est omise) :

$tree = new SearchTree();
$tree->insert(10);
$tree->insert(5);
$tree->insert(15);
$tree->insert(7);
$tree->insert(12);
$tree->insert(20);
Copier après la connexion

Cas pratique

Créons un arbre de recherche et insérons quelques éléments :

$foundNode = $tree->find(12);
if ($foundNode !== null) {
    echo "Found the node with value 12." . PHP_EOL;
}
Copier après la connexion
🎜 Ensuite, on peut trouver un élément : 🎜
$tree->delete(12);
Copier après la connexion
🎜Enfin, on peut supprimer un élément : 🎜rrreee

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal