B.
Bor ist die Datenstruktur zur Speicherung einer Reihe von Linien, die der Wurzelbaum mit Symbolen auf den Rippen ist.
Jede Spitze der Fledermaus entspricht einem Präfix, einige hinzugefügte Linie. Dieses Präfix selbst wird durch eine konsequente Aufzeichnung der Symbole auf den Rippen von der Wurzel auf diese Oberseite erzeugt. Gleichzeitig entspricht jedes vorhandene Präfix genau einem Top. Bores Wurzel entspricht der leeren Linie.
Beispiel für {be, bee, can, cat, cd}
Die Orange ist durch die Spitzen gekennzeichnet, die den Worten des Satzes selbst entsprechen. Sie werden gerufen
Terminal♪
Im Folgenden werden der Akku-Speichercode und seine Ergänzung vorgestellt. So bleibt der Kampf durch die Masse. Es gibt auch die Umsetzung durch die Indikatoren, die im Ausbildungscode dargestellt werden.
// Alphabetgröße in den zu berücksichtigenden Wörtern
const int alph = 26;
/ Struktur für das Bora-Top
struct Node{
/ Rebervektor in Form einer Kommunikationstabelle, d.h.:
- Ja.
- Ja.
- usw.
Vektor weiter;
/ Zusätzliche Parameter
// in diesem Fall die Höhe der Spitze h und die Flagge der Terminologie
int h;
boolterm;
Node(int h) {
next.resize(alph, -1); // ursprünglich ohne Rippe
Diese-teriorh = h; / Höhe gleich
Term = falsch; / standardmäßig ist das Top kein Begriff
♪
?
/ Liste der Peaks ursprünglich auf Nullhöhe
Vektor Trie(1, Node(0));
// Funktion des Hinzufügens der Zeile zum Einbruch
nichtig add(const string komponente s) {
int v = 0; / Aktuelle Top-Zahl ab Wurzel
forn(i, (int)s.size() {~}
int c = s[i] - 'a'; / erhielt die aktuelle Symbolnummer in der Zeile
/ Ist der notwendige Übergang noch nicht vorhanden, machen Sie einen neuen.
wenn (trie[v].next[c]
trie[v].next[c] = (int)trie.size(); / neue Höchstzahl gleich
/ aktuelle Batteriegröße (bei 0 Nummer)
trie.push_back(Node(trie[v].h + 1)); /
♪
v = trie[v].next[c]; //
♪
/ Als es oben war,
// die der ganzen Linie entspricht,
/ Wir markieren es als Begriff
trie[v].term = true;
♪
Wenn Sie die Entfernung des Laufs unterstützen müssen, ist es wahrscheinlich nicht fair. Ich meine, nur um die Flagge der Terminologie zu entfernen (oder vielleicht, anstelle der Flagge, wäre es notwendig, eine variable Zahl zu halten) und der Bora Baum selbst würde sich nicht ändern.
Somit wird die Versorgungs-/Detektion/Nicht-Schenkel-Entsorgung zu linearer Zeit aus der Länge der linearen Anforderung betrieben.
Bor wird im schlimmsten Fall besetzt sein.
O(n|Σ|)
wenn
n
- Gesamtlänge aller Linien, a
Σ
- Das Alphabet der verwendeten Zeilen.