数据结构——树

转载 2016年08月29日 21:36:16

原文地址:http://blog.csdn.net/liuzhanchen1987/article/details/7324935


数据结构中为了存储和查找的方便,用各种树结构来存储文件,本章就浅谈一下各种树的表示方法、特点及各自的用途,本章设计的树结构包括:二叉查找树(二叉排序树)、平衡二叉树(AVL树)、红黑树、B-树、B+树、字典树(trie树)、后缀树、广义后缀树。

1、二叉查找树(二叉排序树)

  (图a)

二叉查找树是一种动态查找表(图a),具有这些性质:                                 
(1)若它的左子树不为空,则左子树上的所有节点的值都小于它的根节点的值;
(2)若它的右子树不为空,则右子树上所有节点的值都大于它的根节点的值;
(3)其他的左右子树也分别为二叉查找树;
(4)二叉查找树是动态查找表,在查找的过程中可见添加和删除相应的元素,在这些操作中需要保持二叉查找树的以上性质。

2、平衡二叉树(AVL树)

(图b)

  含有相同节点的二叉查找树可以有不同的形态,而二叉查找树的平均查找长度与树的深度有关,所以需要找出一个查找平均长度最小的一棵,那就是平衡二叉树(图b),具有以下性质:
(1)要么是棵空树,要么其根节点左右子树的深度之差的绝对值不超过1;
(2)其左右子树也都是平衡二叉树;
(3)二叉树节点的平衡因子定义为该节点的左子树的深度减去右子树的深度。则平衡二叉树的所有节点的平衡因子只可能是-1,0,1。

3、红黑树

  

(图c)

  红黑树是一种自平衡二叉树,在平衡二叉树的基础上每个节点又增加了一个颜色的属性,节点的颜色只能是红色或黑色。具有以下性质:
(1)根节点只能是黑色;
(2)红黑树中所有的叶子节点后面再接上左右两个空节点,这样可以保持算法的一致性,而且所有的空节点都是黑色;
(3)其他的节点要么是红色,要么是黑色,红色节点的父节点和左右孩子节点都是黑色,及黑红相间;
(4)在任何一棵子树中,从根节点向下走到空节点的路径上所经过的黑节点的数目相同,从而保证了是一个平衡二叉树。

4、B-树

(图d)

  B-树是一种平衡多路查找树,它在文件系统中很有用。一棵m阶B-树(图d为4阶B-树),具有下列性质:
(1)树中每个节点至多有m棵子树;
(2)若根节点不是叶子节点,则至少有2棵子树;
(3)除根节点之外的所有非终端节点至少有棵子树;
(4)每个节点中的信息结构为(A0,K1,A1,K2......Kn,An),其中n表示关键字个数,Ki为关键字,Ai为指针;
(5)所有的叶子节点都出现在同一层次上,且不带任何信息,也是为了保持算法的一致性。

5、B+树

(图e)

  B+数是B-树的一种变形,它与B-树的差别在于(图e为3阶B+树):
(1)有n棵子树的节点含有n个关键字;
(2)所有的叶子节点包含了全部关键字的信息,及指向这些关键字记录的指针,且叶子节点本身按关键字大小自小到大顺序链接;
(3)所有非终端节点可以看成是索引部分,节点中仅含有其子树(根节点)中最大(或最小)关键字,所有B+树更像一个索引顺序表;
(4)对B+树进行查找运算,一是从最小关键字起进行顺序查找,二是从根节点开始,进行随机查找。

6、字典树(trie树)

(图f)

  字典树是一种以树形结构保存大量字符串。以便于字符串的统计和查找,经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。具有以下特点(图f):
(1)根节点为空;
(2)除根节点外,每个节点包含一个字符;
(3)从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。
(4)每个字符串在建立字典树的过程中都要加上一个区分的结束符,避免某个短字符串正好是某个长字符串的前缀而淹没。

7、后缀树

  后缀树则是一个字符串的所有后缀组成的字典树。具体内容再前几章已讲过。

8、广义后缀树

  广义后缀树是好几个字符串的的所有后缀组成的字典树,同样每个字符串的所有后缀都具有一个相同的结束符,不同字符串的结束符不同,具体内容见前几章。



举报

相关文章推荐

数据结构_树结构

数据结构中的树,集成了数组中查找迅速和链表添删迅速的特性。

【数据结构】树

树结构——非线性结构组织数据。 直观地,树结构是以分支关系定义的一种层次结构。即树结构组织起来的数据具有层次关系。而这种特性的数据在计算机中应用的非常广泛。如:操作系统中的文件管理、数据库系统中的索...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

数据结构---树

1. 二叉树可以采用顺序存储数组和链式存储二叉链表两种方法来存储二叉树。经常使用的二叉链表方法,因为其非常灵活,方便二叉树的操作。二叉树的二叉链表存储结构如下所示:typedef struct bi...

数据结构—树

数据结构—树 树 树 由显示结点间关系的边相联而成的结点集合。如下图 树的根与任意其他结点之间的路径是唯一的。 树的高度是树中层的数目,该高度也等于根与叶子间最长路径上的结点数目。 上图是一棵...

树--数据结构

非线性结构中的树结构       1、树的基本概念       节点的度:一个结点的字数的个数极为该结点的度。       ...

数据结构——树

树的定义在计算机科学中,树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成的一个具有层状关系的集合。把它叫“树”是因为它看起来像一颗倒挂...

数据结构-树

为什么使用到二叉树? 因为他通常结合了另外两种数据结构的优点。 1>在有序数组中插入数据太慢。 2>在链表中查找太慢。   用树解决问题 要是有一种数据结构,既能像链表那样快速的插入和删除...

数据结构:树

一、数的定义现实生活中,有很多一对多的情况需要处理,所以我们需要研究这种一对多的数据结构——“树”,考虑到它的各种特性,来解决在编程中碰到的相关问题。树(Tree)是n(n≥0)个结点的有限集。n =...

数据结构-树

今天介绍的是数据结构中的树,我们从树的概念,树的形状等各个方面介绍一下树: 树的概念: 树(tree)是包含n(n>0)个结点的有穷集,其中: (1)每个元素称为结点(node); (2)有一...

[数据结构] 树

简介树(Tree)是n(n>=0)个结点的有限集。在任意一棵非空树中 有且仅有一个特定的称为根(Root)的结点 当n > 1时,其余结点可分为m(m > 0)个互不相交的有限集T1,T2,…,Tm,...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)