Trie树:应用于统计、排序和搜索
1. trie树定义
1.Trie树 (特例结构树)
Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。...
分类:
其他好文 时间:
2014-09-04 09:48:08
阅读次数:
270
给定二叉查找树的一个结点, 写一个算法查找它的“下一个”结点(即中序遍历后它的后继结点),
其中每个结点都有指向其父亲的链接。
这个题本质就是线索化二叉树时找后继结点的题。找后继结点存在两种情况:
1 如果当前结点有右孩子,则后继结点为右孩子的最左结点
2 如果没有右孩子,
A 当前结点为父结点的左孩子,则父结点就是后继结点
B 当前结点为父结点的右孩子,则向父结点找,直到...
分类:
其他好文 时间:
2014-09-03 01:32:05
阅读次数:
224
二叉查找树按照二叉树进行组织。二叉查找树关键字的存储方式总是瞒住二叉查找树性质:设x为二查查找树种一个节点。如果y是x的左子树中的一个节点,那么key[x] >= key[y]。如果y是x的右子树的一个节点,那么key[x] left_child!=null)p=p->left_child;retu...
分类:
其他好文 时间:
2014-09-02 17:10:24
阅读次数:
149
给定一棵二叉查找树,设计算法,将每一层的所有结点构建为一个
链表(也就是说, 如果树有D层,那么你将构建出D个链表).
这个题实质是个BFS,但是实现起来有点麻烦,又不像常见的BFS,
所以编写代码时有点艰难。
下面的代码使用两个list来实现层次遍历的,首先用Cur链表存储当前层
的结点,然后用Pre链表存储当前层的子层结点,Cur和Pre。下一次遍历时
Pre就变成当前层,Cur就...
分类:
其他好文 时间:
2014-09-01 01:40:22
阅读次数:
246
/************************************************************************* 这是一个二叉查找树,实现了以下操作:插入结点、构造二叉树、删除结点、查找、 查找最大值、查找最小值、查找指定结点的前驱和后继。上述所有操作时间复杂.....
分类:
其他好文 时间:
2014-08-31 19:58:31
阅读次数:
190
最近几月一直在自学C语言和数据结构,先是写了排序二叉树,觉得平衡二叉树作为一个经典数据结构,有必要实现一下。网上看了些资料,在AVL和红黑树之间考虑,最后个人还是倾向于AVL。不同于标准AVL的是,笔者没有使用平衡因子,直接根据左右孩子的高度差值判断是否平衡。整个平衡二叉树是在普通二叉查找树的基础上...
分类:
编程语言 时间:
2014-08-31 15:39:21
阅读次数:
383
具有以下特性的二叉查找树:(红黑树的深度可以保证是对数级的,它的深度通常和AVL树是一样的)1,每个结点都被标记为红色或者黑色2,根是黑色的3,如果某个结点是红色的,那么它的孩子是黑色的(连续的红色结点是不允许的)4,每一条从某个结点到一个null链的路径必须包含相同数量的黑色结点自下而上的插入:1...
分类:
其他好文 时间:
2014-08-29 15:58:18
阅读次数:
240
二叉查找树的基本操作包括搜索、插入、删除、取最大和最小值等都能够在O(h)时间复杂度内实现,因此能在期望时间O(lgn)下实现,但是二叉查找树的平衡性在这些操作中并没有得到维护,因此其高度可能会变得很高,当其高度较高时,而二叉查找树的性能就未必比链表好了,所以二叉查找树的集合操作是期望时间O(lgn),最坏情况下为O(n)。
红黑树也是一种二叉查找树,它拥有二叉查找树的性质,同时红黑树还...
分类:
其他好文 时间:
2014-08-28 00:58:48
阅读次数:
314
二叉查找树是一种树数据结构,它与普通的二叉树最大的不同就是二叉查找树满足一个性质:对于树中的任意一个节点,均有其左子树中的所有节点的关键字值都不大于该节点的关键字值,其右子树中的任意一个节点的关键字值都不小于该节点的关键字值。在二叉查找树上可以进行搜索、取最小值、取最大值、取指定节点的前驱、取指定节点的后继以及插入和删除节点操作,因此二叉查找树和堆(大顶堆和小顶堆)一样,也可以做优先队列,都能够在 O(lgn) 的时间内取得集合的最大值和最小值。一个二叉查找树的期望高度为O(lgn),因此在二叉查找树上的基...
分类:
其他好文 时间:
2014-08-27 01:40:47
阅读次数:
273
二叉查找树通俗说就是左孩子比父亲小,右孩子比父亲大。构造这么一个树,树嘛,递归即可。 例如一棵树后序遍历是这样(下图的树):2 9 8 16 15 10 25 38 42 45 30 20。最后的20肯定是树根,这里要抓住一个规律:20是树根,那么2 9 8 16 15 10都是左子树,25 ...
分类:
其他好文 时间:
2014-08-25 22:38:44
阅读次数:
304