это то, что я пытаюсь сделать: "book" => {b:{o:{o:k:{'end':true}
Может кто-нибудь объяснить мне / связать мне объяснение этого?
const ENDS_HERE = '__ENDS_HERE'
class Trie {
constructor() {
this.node = {};
}
insert(word){
let trie = this.node;
console.log( 'start inset', trie )
for ( let index in word ) {
let char = word[index];
if ( !trie[char] ) {
trie[char]= {}
}
console.log( trie )
trie = trie[char]
}
trie[ENDS_HERE] = true
}
}
let test= new Trie
test.insert('book')
test.insert('baak')
это то, что записывается в журнал:
start inset {}
{ b: {} }
{ o: {} }
{ o: {} }
{ k: {} }
start inset { b: { o: { o: [Object] } } }
{ b: { o: { o: [Object] } } }
{ o: { o: { k: [Object] } }, a: {} }
{ a: {} }
{ k: {} }
в этой строке trie = trie[char]
сбрасывает значение дерева в {}
.последняя строка для функции вставки затем устанавливает { '__ENDS_HERE' = true}
, однако при вызове test.insert('baak')
вы можете видеть, что trie === { b: { o: { o: [Object] } } }
.
мой вопрос: как он строит {b:{o:{o:k:{'end':true}
? такие же результаты возникают в python.Код выше написан на JavaScript.