美文网首页
数据结构_树_线索二叉树

数据结构_树_线索二叉树

作者: arkulo | 来源:发表于2015-09-13 11:06 被阅读103次

github地址:
https://github.com/arkulo56/thought/blob/master/software/dataStruct/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84_%E6%A0%91_%E7%BA%BF%E7%B4%A2%E4%BA%8C%E5%8F%89%E6%A0%91.md

线索二叉树

产品分类是树型结构,如果要频繁的按照一定的次序访问产品分类(遍历)

  1. 有效的利用了二叉链表中的空指针
  2. 对二叉树以某种次序遍历使其变为线索二叉树的过程称为线索化
  3. 一棵有n个节点的二叉树,左右孩子用到的指针是n-1,留给线索的空指针是n+1

<img src="https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/xiansuo_binaryTree.png" width="600" />

创建

按照中序遍历访问每一个节点,访问的过程中,用线索取代空指针。

  1. 若上次访问的节点的右指针为空,则将当前访问的节点地址填入,并置右标识位为1(后序)
  2. 若当前访问的节点的左指针为空,则将上次访问的节点地址填入,并置做标识位为1(前序)

注:从图2的H节点开始中序遍历,按照上述两条规则就可建立线索二叉树了

查询

访问前驱后继的方法是相同的,下面介绍后继,前驱反过来就行了

  1. 如果当前节点P的右标识位为0,则P->rchild为线索,指向P的后继
  2. 如果节点P的右标识位为1,则P的后继节点是右子树中序遍历的第一个节点。也就是沿着P的右孩子开始,按照左链(左孩子)往下查,直至找到一个没有左孩子的节点为止。

注:图3中A节点就是比较特殊的节点,他的前驱后继就得通过左右子树确定

相关文章

  • 线索二叉树操作

    树节点 创建中序线索二叉树 遍历中序线索二叉树 创建前序线索二叉树 遍历前序线索二叉树 参考:https://bl...

  • 数据结构--树

    树 树是很常见而且被广泛利用的数据结构,而且种类繁多,包括一般二叉树、完全二叉树、满二叉树、线索二叉树、二叉排序树...

  • 二叉树—线索二叉树

    1、线索二叉树的引入 在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或...

  • javascript线索化二叉树

    定义二叉树创建方法 对二叉树进行中序线索化 遍历线索二叉树 测试

  • 数据结构与算法

    数据结构线性与非线性数组、链表、栈、队列、树、图 树二叉树:顺序,最优、线索、搜索,平衡多路查找树3、排序算法4、...

  • 数据结构与算法--线索二叉树及其前序、中序遍历

    数据结构与算法--线索二叉树及其前序、中序遍历 二叉树如果某个结点没有左孩子或右孩子,则这个域就为空。如node....

  • 数据结构线索二叉树

    线索二叉树构成 线索化的节点 实现

  • 理解线索二叉树

    原链接:理解线索二叉树|CloudWong 线索二叉树原理 遍历二叉树的其实就是以一定规则将二叉树中的结点排列成一...

  • 数据结构 - 概要

    数组 链表 堆/栈/队列 树 数据结构 - 二叉树数据结构 - 二叉查找树数据结构 - 平衡二叉树数据结构 - A...

  • 2018-11-20

    数据结构 复习了森林转换成二叉树,并写出先序中序序列和后续线索,学习哈夫曼树的构造

网友评论

      本文标题:数据结构_树_线索二叉树

      本文链接:https://www.haomeiwen.com/subject/whopcttx.html