本文将详细介绍树数据结构的基本概念,以及通用树的Java实现方法为各种树的深入学习奠定了基础。
树结构和线性结构之间的最大区别在于,树中的节点具有明显的层次关系,一个节点可以对应于多个节点。
树结构和线性结构之间的最大区别在于,树中的节点具有明显的层次关系,一个节点可以与多个节点相对应。树的定义如下:
树(树)是一组有限的n(n≥0)节点。n= 0称为空树。在任何非空树中
从上面的树的定义来看,我们可以看到使用了递归的概念,也就是说,树的概念也用于树的定义,root的子树节点和root节点子树。递归思维与堆栈数据结构有关。您可以阅读本文:数据结构的原理 - 堆栈(堆栈)以及Java实现和后缀表达式的操作。
如上图所示,树具有唯一的节点R,其子树是三个树,带有A,B和C作为根节点。
从递归中,我们发现树是N节点和N -1边的集合,其中一个节点称为root。N -1边缘的结论是通过以下事实获得的。每一侧都将一个节点连接到其父亲,除根节点外,每个节点都有父亲。
在上图中,节点r是root。节点A有父子D和E. E. E. E. E. E. E. E. E. E. E. E. E. E. E. E. e。可能有多个儿子,或者可能是一个零儿子。上图中的叶子是E,F,G,H,I,J和K。
与同一父亲的节点被称为兄弟姐妹,例如a,b和c节点是兄弟节点。类似的方法可以定义祖父和孙子(孙子)。
森林:两棵或多个不相遇的树木的收藏。
节点的级别从根定义开始。这里的规定规定根是第一层,根的子是第二层。如果某个节点在i-然后是i+1层上的一个层。树中的节点称为树的深度或高度。在上图中,树的深度为4。
本文规定,从顶部到底部,深度,从底部到顶部的数字是高度。节点将受根节点的深度或1的影响。本文将根节点的深度带到1.树的深度等于其最深叶的深度。这个深度始终是这棵树的高度。
在上图中,根节点R的深度为1,高度为4。子节点B的深度为2,高度为2。
树节点包含一个数据元素,并指向其子树的几个分支。节点具有节点的直接子节点的数量(de-gree)。
具有0度的节点称为叶子节点(叶)或末端节点;不是0的节点是非末端节点或分支。
除根节点外,分支也称为内部节点。树的度是树中节点的最大值。在上图,因为该树节点的节点的最大值是节点r的度量和D,即3,因此树的程度也为3。
无序树:树上任何节点的子节点之间都没有秩序关系。这棵树被称为无序树,也称为自由树。有序树:树上任何节点的子节点之间都有订单关系,该种植树称为有序树。
树木也可以通过存储结构和链条存储结构来实现。贝洛有三个常见的树。后来引入特殊树时,例如二进制树,红树和黑树等,它们还具有自己的特殊实现方法。
顺序存储结构用于实现树,数组用于将节点存储在底部。由于子节点具有唯一的父节点,因此可以使用父节点来指示树的结构。
该节点由数据域和父节点的索引位置组成。根节点的父节点索引为-1。
上图中的树,最简单的父节点语句可以表示为:
0R-11A02B03C04D15E16F27G39I410J411K4树节点设计可以:
对于这样的存储结构,我们可以根据节点的父索引轻松地找到其父母节点。所使用的时间复杂性是O(1)。在时间为-1之前,这意味着找到树节点的根。但是,如果您想知道孩子节点是什么,则需要遍历整个数组。
为了能够在直觉上找到子节点。将子节点链接列表添加到原始节点。原始节点保存了子节点列表的头部索引,节点保存了父节点的索引。这需要一个新的子节点。
对于上述父节点表示和父亲-son节点表示形式,知道该节点的兄弟节点并不方便。
实际上,在观察树结构之后,我们发现,如果有任何树,它的第一个孩子是独一无二的,如果存在,则其正确的兄弟是独一无二的。节点和此节点的正确兄弟。只有两个参考可以轻松地表示节点的唯一对应关系。
为了打破节点的数量,我们可以使用链接列表。在订单中找到父节点,我们还可以添加父节点索引。
可以设计如下
使用示意图以视觉显示此表达式的效果:
图中只有子节点和兄弟节点的参考链。红色是子节点的引号。黑色是正确的兄弟节点的参考。我们看到,只有两个参考关系可以显示完整的树。当您需要在节点上找到子节点或父节点或兄弟节点时,您不需要通过整棵树在整棵树上穿过。
上述表示方法,每个节点最多包含两个参考节点(无需计算父节点引用)。实际上,这种指示复杂多子节点树的方法表示为简单的二进制树:
这种表达将来是将来最常用的方法,二进制树将是我们将来使用的最受处理的物种之一。
本文是该数据结构的条目 - 级别的文章。它解释了树木的定义和解释以及详细的各种专业术语,然后解释了树的普遍实现。事实,特征数据结构(例如二进制树,AVL树,红色和黑树)具有自己的方式表达自己的方式。但是上述方法可以理解为树的共同实现。
最后,提到了二进制树。二进制树将是我们将来使用的最多的树之一。内容很大。我不在这里介绍它。本文用作树中的入门文章。在随后的ArticleStrees中。
相关文章:
作者:Liu Java