数据结构·树

二叉树·Binary Tree


完全二叉树

最下层不满,左有右无。

应用:堆。


满二叉树


二叉查找树

查找树也叫排序树
元素大小有序,左小右大(节点的左元素比自己小,右元素比自己大)


平衡二叉树

子树的高度差不超过1(即左子树和右子树数量相等,达到平衡)

AVL树

最早的平衡二叉树:AVL树(G.M. Adelson-Velsky 和 E.M. Landis发明之)

应用:windows进程地址空间的管理。

红黑树

【红黑树】接近【平衡二叉树】,查询速度快,查询子节点最大次数和最小次数不超过2倍。

红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
总结:黑根黑叶,一红带二黑,叶为NIL。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
特性(5)确保没有一条路径会比其他路径长出俩倍。因而,红黑树接近平衡二叉树。

红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率很高。
Java集合中的TreeSet和TreeMap,Linux虚拟内存的管理,C++的STL(Standard Template Library,标准模板库)都是通过红黑树实现。

B树

R.Bayer提出,二叉平衡树的扩展:多叉平衡树。

(1)根节点至少有两个子节点
(2)每个节点有M-1个key,并且以升序排列
(3)位于M-1和M key的子节点的值位于M-1 和M key对应的Value之间
(4)其它节点至少有M/2个子节点

增删改查都在对数时间内完成。

应用:磁盘文件组织、数据库索引(B树/B+树)

B+树

B+树是对B树的变形,差异在于:
(1)有k个子结点的结点必然有k个关键码;
(2)非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。
(3)树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。

B+树查询速度更加稳定(速度完全接近于二分查找)

详细的关于B数和B+树解释请参考:https://www.cnblogs.com/vincently/p/4526560.html


Tire树

称为字典树、单词查找树。

哈希树的变种,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

应用:用于统计、排序,经常被搜索引擎系统用于文本词频统计。

Tire树的基本性质:

根节点不包含字符
节点只包含一个字符
每个节点的所有子节点包含的字符都不相同
从根节点到某一节点,路径上经过的字符连起来,就是该节点对应的字符串

posted @ 2019-04-14 21:07  虎老狮  阅读(232)  评论(0编辑  收藏  举报