当前位置: 首页 > 网络应用技术

数据结构 - 线索二进制树的原理和Java实施案例

时间:2023-03-06 22:19:26 网络应用技术

  本文介绍了线索二进制树的概念,以及线索二进制树的Java的实现。如果您需要遍历或找到节点,则需要遍历或在顺序中找到前驱动器和后继产品,然后带有线索二进制链接列表的存储结构是一个很好的选择。

  如果您不知道二进制树的概念,则可以首先阅读本文:二进制树的输入和Java实现情况的详细说明。此处未描述二进制树的概念。

  对于带有n个节点的二进制链接列表,每个节点在左和右子里都有两个参考域,因此有2N参考域。n个节点的N-1分支的N-1分支的N-1分支,这些分支IS,实际上有2n-(n-1)= n + 1空参考域。这些空间不存储任何东西和废物内存资源。

  如下所示:

  二进制树的遍历本质上是将复杂的非线性结构转换为线性结构,因此每个节点具有唯一的前驱动器和后继(第一个节点不在前面,最后一个节点没有连续)。很方便地找到二进制树节点的左和右子女。为了轻松找到前轮驱动和后继,有两种方法。一种方法是在节点结构中增加向前和向后引用。此方法增加了储存开销,这是不可能的;第二个是使用二进制树的空链参考。

  我们可以考虑使用那些空的地址在某些类型的遍历中以节点的顺序存储前轮驱动和后继节点的地址。我们将这种向前驱动和后继者称为线索,以及线索二进制链接列表,相应的二进制树称为螺纹二进制树。

  在某些遍历中遍历二进制树的过程(例如第一阶,中等,后订单或层序列)将其变成线索变成线索二进制树。在线索的不同性质上,线索,线索二进制树可以分为三种类型:正面 - 序列二进制树,中级线索二进制树和后序列线线二进制树。

  本机遍历后数据的数据结构如下:

  可以看出,它充分利用空参考域的空间(等同于节省空间),并确保可以将创建的遍历用于前轮驱动器的寿命(这意味着保存时间)。因此,在实际问题中,如果使用的二进制树经常穿越或找到节点,则需要在序列中遍历前轮驱动器和后继产品,那么线索二进制链接列表的存储结构是非常好的选择。

  线索二进制树中的线索可以记录每个节点的前驱动器和连续信息。要用孩子区分线索参考,在每个节点中设置两个徽标和rtag。

  当标签和rtag为0时,左右是左右孩子的指针。否则,左侧是一个线索(pre),右是节点的后继线索(SUC)。由于徽标仅占据一个二进制,因此每个节点所需的存储空间可节省很多。

  二进制树的节点结构被重新定义如下:

  其中:ltag = 0,左指向左儿子;ltag = 1,向前指向前;正确指向右儿子rtag = 0;右= 1当rtag = 1时。

  现在,二进制树中二进制树的构造的完整Java代码。第一个序列的构建和后面的线索二进制树基本与中等顺序的构造基本相同。如果您不知道二进制树的4种遍历方法,您可以阅读本文:详细说明二进制树的四种遍历方法和Java代码的完整演示。

  作者:Liu Java