Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从单词创建树/Trie_Javascript_Algorithm_Data Structures_Tree_Trie - Fatal编程技术网

Javascript 从单词创建树/Trie

Javascript 从单词创建树/Trie,javascript,algorithm,data-structures,tree,trie,Javascript,Algorithm,Data Structures,Tree,Trie,我需要一些帮助来创建一个javascript算法,用一个单词构建一个树。树的节点是始终按字母顺序排列的单词的字母。例如,“余额”应为该对象: const tree = { b: { l: { n: {} }, n: {} }, a: { l: { n: { } }, n: { }, c: { e: {

我需要一些帮助来创建一个javascript算法,用一个单词构建一个树。树的节点是始终按字母顺序排列的单词的字母。例如,“余额”应为该对象:

  const tree = {
    b: {
      l: {
        n: {}
      },
      n: {}
    },
    a: {
      l: {
        n: {

        }
      },
      n: {

      },
      c: {
        e: {

        }
      },
      e: {

      }
    }
....
  }
}

  const asArray = a.split('')
  const tree = {}
  for (let i = 0; i < a.length; i++) {
    const letter = array[i];
    const greaterThan = asArray.filter((value, index) => {
      return value > letter && index > i
    })
    tree[letter] = {}
    for (let j = 0; j < greaterThan.length; j++) {
      const gt = greaterThan[j];
      tree[letter][gt] = {}
    }
  }
const树={
b:{
l:{
n:{}
},
n:{}
},
a:{
l:{
n:{
}
},
n:{
},
c:{
e:{
}
},
e:{
}
}
....
}
}
const asArray=a.split(“”)
常量树={}
for(设i=0;i{
返回值>字母和索引>i
})
树[字母]={}
for(设j=0;j

一个javascript对象,其键是字母。

您可以获得字符串的所有有序部分,然后构建树

函数getParts(字符串){
功能iter(i,左){
var last=左[left.length-1];
如果(i>=string.length){
如果(左.长)结果。推(左);
返回;
}
如果(!last | | last{
a、 减少((o,k)=>o[k]=o[k]|{},r);
返回r
}, {});
控制台日志(树)

。作为控制台包装{最大高度:100%!重要;顶部:0;}
这是不寻常的。一个单词只得到一个分支。是的,我希望
balance
产生
{b:{a:{l:{a:{n{c:{e:{}}
或类似的结果。生成此结构的规则是什么?
树的节点是始终按字母顺序排列的单词的字母。
当@NinaScholz实际每个字母生成自己的树时,这将如何工作。在这种情况下,没有单个根节点。对象的第一级是它们树的根。@VLAZ规则是循环遍历单词的所有字母,然后从那里开始分支它们自己的树。如果对象是嵌套的,我会说顺序不重要,对吗?太好了!但是为什么一封信不能产生a:c:e?