问题标签 [ternary-tree]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5182 浏览

java - 不区分大小写的三元搜索树

我一直在使用三元搜索树作为实现自动完成下拉组合框的数据结构。这意味着,当用户键入“fo”时,将显示下拉组合框

foo 食品 足球

问题是,我目前使用的三元搜索树是区分大小写的。我的实现如下。它已被现实世界使用了大约 1++ 年。因此,我认为它非常可靠。

我的三元搜索树代码

但是,我正在寻找不区分大小写的三元搜索树,这意味着,当我输入“fo”时,下拉组合框将显示我

foo 食物 足球

以下是 TST 的一些关键接口,我希望新的不区分大小写的 TST 也可能有类似的接口。

使用示例如下。TSTSearchEngine 使用 TernarySearchTree 作为核心骨干。

三元搜索树的示例用法

0 投票
15 回答
20482 浏览

algorithm - 如果有三元搜索,为什么要使用二分搜索?

我最近听说过三元搜索,我们将一个数组分成 3 个部分并进行比较。这里将进行两次比较,但它将数组减少到 n/3。为什么人们不使用这么多?

0 投票
4 回答
4105 浏览

algorithm - 平衡三元搜索树

如何“平衡”三元搜索树?大多数 tst 实现不解决平衡问题,但建议以最佳顺序插入(我无法控制。)

0 投票
2 回答
4421 浏览

c++ - 三元搜索树

当我使用字符串添加单词序列时,add()在段内打印 if(t==NULL)但树没有形成,即节点没有链接。

0 投票
3 回答
18392 浏览

c++ - 错误:不允许指向不完整类类型的指针

在实现三叉树时,我被这一步难住了:

当我将鼠标图标移到 附近时p,它会显示红色并显示错误:

我的问题是什么是不完整的课程?请帮助我,谢谢。

0 投票
1 回答
768 浏览

c++ - 在三元搜索树中搜索(不使用)通配符

我想从“三元搜索树”库(sourceforgehttp://code.google.com/p/ternary-search-tree/)中修改递归函数。默认行为是在三元搜索树中搜索与指定通配符字符串匹配的所有字符串。即如果我搜索“KE*”,在树中拥有“KEY”、“KE1”、“KE2”会找到所有条目。但我需要相反的行为 - 在三元搜索树(包含通配符)中搜索与指定字符串匹配的所有条目。即如果我搜索“KEY”,在树中有“KE*”、“KEY”、“K*”应该会找到所有条目。

树/节点定义如下:

以及具有默认行为的函数:

pmVectorPtr 是一个指向 int 向量的指针,函数 get 以根元素和 searchkey 作为参数调用。我已经尝试过适应它,但还无法理解它。我自己的代码:

我已经广泛使用调试器对此进行了编码,据我所知,它“似乎”可以工作(即使通配符位于字符串的开头或中间)。但是,如果我在树中添加示例:“K*”和“Ke*”,它只会为“Key”找到一个解决方案(在本例中为 Ke*)。如果我从树中删除“Ke*”,它会为“Key”的搜索查询找到“K*”。我还是不明白为什么。

有什么想法吗?


附录(我的测试用例):

0 投票
2 回答
477 浏览

c# - 基于字典/树的快速键查找

我有一个包含 20000 个域名的数据库,包括顶级域、二级和低级域。例如

.biz stackoverflow.com ru.wikipedia.com

我想执行快速查找以查看输入 URL 是否与这 20000 个中的任何一个匹配。我可以使用 Dictionary 键或 HashSet.Contains,但它仅适用于完全匹配。由于数据库还包含 TLD 名称,因此我希望 acmeycompany.biz 也因为 .biz TLD 而返回匹配项。另一方面,fr.wikipedia.com 不应该匹配,因为子域不同。

简单地遍历列表并进行基于字符串的比较也不是一种选择。如果我有 1000 个 URL 进行比较,那就太慢了。所以它必须是基于键的索引查找。

我正在考虑构建一个如下所示的树结构,然后进行基于键的查找,例如:

.com .wikipedia .ru .stackoverflow .biz

然后我可以将输入 Url (sampledomain.com) 拆分为多个部分并像 .com -> .sampledomain 这样进行查找

任何人都可以指点我一个样本怎么做吗?或者还有什么其他选择?任何样品表示赞赏。

谢谢!

这就是我开始的方式......这是 vb.net 代码,但你明白了。

0 投票
3 回答
105 浏览

c++ - 三叉树给出错误

这是简单的三叉树结构。我已经正确编写了代码,但是在运行一段时间后它会说:

抱歉,ternary.exe 已停止工作。

你能告诉我这个错误的原因吗?

0 投票
1 回答
980 浏览

c++ - 在三元堆中实现涓流操作的最有效方法

抱歉,如果标题中的术语已关闭。我试图通过更频繁地使用它们来更好地理解这些术语。

无论如何,我目前正在一个数据结构类的实验室(使用 C++)中工作,我必须构建一个三元堆并将其与已经提供给我们的二元堆进行比较。由于我有一些额外的时间,我想解决我的代码中的一些细节,以便它尽可能高效地运行。

我最担心的是我正在使用的 if-else 语句的数量。实际上,我必须花十分钟在纸上组织它们的布局,以免我感到困惑。(我不是在抱怨,我只是不知道这是否是解决问题的最佳方法。)

0 投票
0 回答
187 浏览

c++ - 检查 if(!node->next) 时,node->next =0x4 应该为 NULL

所以我正在写一个三叉树,我可能会在 20 次插入后出现段错误。当我在 GDB 中隔离问题时,我得到了一个以前从未见过的非常奇怪的错误。

在下面的代码语句中,更大的是另一个节点,该节点应该为 NULL(或另一个节点)但是当我在 GDB 中并检查它的值时,我得到 *tempNode->0x4 这会导致我的代码尝试设置更大( 0x4) 作为当前节点并导致段故障。

这是 GDB 输出: (gdb) p *tempNode->greater 无法访问地址 0x4 处的内存

被困了几个小时,有什么想法吗?