JSFiddle - React, Tailwind, and code Playground
by dhizzybusy
JavaScript
var node = {
key: null,
value: null,
children: []
}
function Trie() {
this.head = {
key: '',
children: {}
}
}
Trie.prototype.add = function(key) {
var curNode = this.head,
newNode = null,
curChar = key.slice(0, 1);
key = key.slice(1);
while (typeof curNode.children[curChar] !== "undefined" &&
curChar.length > 0) {
curNode = curNode.children[curChar];
curChar = key.slice(0, 1);
key = key.slice(1);
}
while (curChar.length > 0) {
newNode = {
key: curChar,
value: key.length === 0 ? null : undefined,
children: {}
};
curNode.children[curChar] = newNode;
curNode = newNode;
curChar = key.slice(0, 1);
key = key.slice(1);
}
};
Trie.prototype.search = function(key) {
var curNode = this.head,
curChar = key.slice(0, 1),
d = 0;
key = key.slice(1);
while (typeof curNode.children[curChar] !== "undefined" && curChar.length > 0) {
curNode = curNode.children[curChar];
curChar = key.slice(0, 1);
key = key.slice(1);
d += 1;
}
if (curNode.value === null && key.length === 0) {
return d;
} else {
return -1;
}
}