FAST & FURIOUS

This commit is contained in:
2025-05-06 16:56:59 +02:00
parent ea4555144c
commit 47be3d2e51
3 changed files with 70 additions and 31 deletions

View File

@ -1,9 +1,9 @@
<?php
class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
{
class Trie implements ArrayAccess, IteratorAggregate, Countable {
public array $noeud = [];
private $nb_branches = 0;
public function offsetSet($cles, $valeur): void {
if (!count($cles)) {
@ -11,6 +11,7 @@ class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
}
$cle = array_shift($cles);
if (!isset($this->noeud[$cle])) $this->noeud[$cle] = new Trie();
$this->nb_branches++;
if (count($cles)) {
$this->noeud[$cle]->offsetSet($cles, $valeur);
} else {
@ -47,8 +48,12 @@ class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
public function offsetUnset($cles): void {
if ($this->offsetExists($cles)) {
$cle = array_shift($cles);
$this->nb_branches--;
if (count($cles)) {
$this->noeud[$cle]->offsetUnset($cles);
if (count($this->noeud[$cle]) == 0) {
unset($this->noeud[$cle]);
}
} else {
unset($this->noeud[$cle]);
}
@ -67,4 +72,9 @@ class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
}
}
}
}
// Countable
public function count(): int {
return $this->nb_branches;
}
}