Explication détaillée du processus Double-Array Trie

Detailed Explanation Double Array Trie Process



Double-Array Trie est divisé en deux situations de construction statique et de construction dynamique,

Les principales formules utilisées dans le processus de construction dynamique sont:



base [s] + c = t



check [t] = base [s]



La formule de transfert dynamique principalement utilisée dans le processus de construction statique est:

base [s] + c = t

check [t] = base [s]



Les blogs bien rédigés comprennent les éléments suivants:

https://blog.csdn.net/u011730199/article/details/82752521

https://www.hankcs.com/program/java/%E5%8F%8C%E6%95%B0%E7%BB%84trie%E6%A0%91doublearraytriejava%E5%AE%9E%E7%8E%B0 .html

https://www.cnblogs.com/ooon/p/4883159.html

https://blog.csdn.net/xlxxcc/article/details/67631988

Les troisième et quatrième blogs utilisent le même exemple pour expliquer, mais je n'ai pas très bien compris pourquoi cette position dans l'image ci-dessous est 8. (Vous pouvez d'abord lire le quatrième blog, si vous le comprenez, vous n'avez pas besoin de lire Mien.)

Prenons ici la figure suivante comme exemple et poussez la forme de matrice finale à la main.

La première chose à savoir est que le processus de construction d'une arborescence de dictionnaire est un processus de traversée en profondeur, et lorsque vous utilisez l'arborescence de dictionnaire établie pour effectuer certaines opérations de requête, le processus de traversée en largeur est utilisé.

L'image regarde de gauche à droite.

Dans le quatrième processus de calcul de blog, la position, la base et le contrôle du nœud vide ne sont pas donnés. Je pense que ce processus devrait être donné de manière synchrone, sinon ce sera compliqué.

Donc, avec les résultats finaux donnés dans les quatrième et troisième blogs.

root A C Z C D D F Q E F F AC AD CD CF ZQ ACE ACFF i 0 67 69 92 70 71 77 79 86 142 143 74 72 76 78 80 83 73 75 base 1 2 8 4 72 76 78 80 83 73 3 75 -1 -4 -5 -6 -7 -2 -3 check 0 1 1 1 2 2 8 8 4 72 72 3 72 76 78 80 83 73 75