Trie tree 和 Ternary search 比较

Trie tree (字典树)

优点: 高效

缺点: 耗内存

Ternary search (结合Trie tree 和 二叉搜索树的各自优点,节省了内存,降低了效率)

简介: 三叉搜索树,左右两叉用于指引key大小的走向,中间叉表示与当前字符相等

优点: 节省内存

缺点: 没有Trie tree 高效,且插入顺序严重影响效率

时间: 2024-10-17 00:25:46

Trie tree 和 Ternary search 比较的相关文章

Ternary Search Trees 三分搜索树

经常碰到要存一堆的string, 这个时候可以用hash tables, 虽然hash tables 查找很快,但是hash tables不能表现出字符串之间的联系.可以用binary search tree, 但是查询速度不是很理想. 可以用trie, 不过trie会浪费很多空间(当然你也可以用二个数组实现也比较省空间). 所以这里Ternary Search trees 有trie的查询速度快的优点,以及binary search tree省空间的优点. 实现一个12个单词的查找 这个是用二

数据结构《17》---- Ternary Search Tree

一. 序言 上一篇文章中,给出了 trie 树的一个实现.可以看到,trie 树有一个巨大的弊病,内存占用过大. 本文给出另一种数据结构来解决上述问题---- Ternary Search Tree (三叉树) 二.数据结构定义 Trie 树中每个节点包含了 26 个指针,但有很大一部分的指针是 NULL 指针,因此浪费了大量的资源. 一种改进措施就是,以一棵树来代替上述的指针数组. 节点定义如下: 一个节点代表了一个字母,左孩子的字母小于当前节点,右孩子的字母大于当前节点. 同时每个节点包含一

Ternary Search Tree C++实现

问题描述: 1.Ternary Search Tree较之于Trie Tree也是一种前缀树(prefix tree),主要用于存储字符串,再对大量字符串进行查询和存储(insert)操作时有非常好的性能: 2.Ternary Search Tree vs Trie Tree有更好的空间效率:所占内存更少,对于存储相同的字符串集: 3.Ternary Search Tree每个节点有三个指针,分别指向小于,等于,大于此节点值(字符串中的一个字符)的各个孩子节点: 4.Ternary Search

Ternary Search Tree 应用--搜索框智能提示

前面介绍了Ternary Search Tree和它的实现,那么可以用Ternary Search Tree来实现搜索框的只能提示,因为Ternary Search Tree的前缀匹配效率是非常高的,总体思路如下(其中很多可以根据自己的需要修改,我只是写出我的做法): 比如搜索歌曲时智能提示: 建立Ternary Search Tree 将所有歌曲名的字符串放置在一个map中,key为歌曲名.value存储歌曲信息,可以是一个类对象domain,在这里可以按照key值将相同歌曲的播放次数累加,并

笔试算法题(39):Trie树(Trie Tree or Prefix Tree)

出题:TRIE树 (Trie Tree or Prefix Tree): 分析: 又称字典树或者前缀树,一种用于快速检索的多叉树结构:英文字母的Trie树为26叉树,数字的Trie树为10叉树:All the descendants of a node have a common prefix of the sequence associated with that node, and the root is associated with the empty sequence. 由于不同的se

Trie Tree的c++实现

问题描述: 1.Tire tree 是一种用来存储字符串的高效的数据结构.它的插入和查询的时间复杂度为O(string length).用self balance tree 存储字符串的 时间复杂度为O(length(string)*lgN),N是树的节点树.Trie tree的查询和存储优势是很显然的: 2.它的缺点是树的存储空间变大,需要更多的内存: 3.它的每个节点会有多个孩子节点,同一节点下的孩子共享相同的前缀串(从根节点到父节点的字符串): 4.详细可见下图: 程序代码: #ifnde

Trie Tree简单实现

最近突然有兴致hiho一下了,实现了下trie tree,感觉而言,还是挺有意思的,个人觉得这货不光可以用来查单词吧,其实也可以用来替代Hash,反正查找,插入复杂度都挺低的,哈哈,啥都不懂,瞎扯....废话不多,正题开始! 题目截下: Trie Tree用来干啥呢,套用Hiho上的解释,比如存在一个字典,里面存在10000个单词,需要查找以xxx为前缀的单词个数,按照常规思维,10000 个单词,挨个比对,哇,复杂度爆炸!所以此时呀,将这些单词以树的形式存储,每个节点存放一个字符,这样一来,添

Trie和Ternary Search Tree介绍

Trie树 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树. Trie树与二叉搜索树不同,键不是直接保存在节点中,而是由节点在树中的位置决定.一个节点的所有子孙都有相同的前缀(prefix),也就是这个节点对应的字符串,而根节点对应空字符串.一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值. Trie树可以利用字符串的公共前缀来节约存储空间,如下图所示,该Trie树

Ternary Search Tree Java实现

/** * @author Edwin Chen * */ //定义节点 class Node { //存储字符串 char storeChar; //是否完成单词 boolean isComplete; Node leftChild,centerChild,rightChild; //构造方法 public Node(char storeChar,boolean isComplete) { this.storeChar = storeChar; this.isComplete = isComp