算法和数据结构———线索二叉树

线索二叉树 Threaded Binary Tree

当以二叉链表作为存储结构时,只能找到结点的左右孩子的信息,而不能给出结点的任一序列的前驱与后继信息,这种信息只有在遍历的动态过程中才能得到,为了能保存所需的信息,需要增加标志域。

算法和数据结构———线索二叉树_第1张图片
即:当Itag中的数据为0时,此时它指向的是此节点的左孩子;数据为1时,此时它指向的是此节点的前驱。rtag同理。

以这种结构构成的二叉链表作为二叉树的存储结构,叫做线索链表,其中指向结点前驱与后继的指针叫做线索.加上线索的二叉树称之为线索二叉树。

其中,线索二叉树又分为 先序线索二叉树,中序线索二叉树,后序线索二叉树。

线索二叉树的过程:

  1. 首先将普通二叉树转化为有五个数据域的链表表示形式。
  2. 中间的区域填写当前节点的值,左边/右边的区域填写0或1(如果当前节点有左孩子/右孩子则填写0,没有则填写1)
  3. 最左/右边的数据域引出箭头,指向当前节点的左/右孩子或前/后驱。(如果0则指向左右孩子,如果是0指向前/后驱)
  4. 前后驱的选择:根据当前的要求进行选择,如果要求建立当前二叉树的 中序线索化二叉树 ,则需要写出当前树的 中序序列,序列中某个数字的前一个数字(对应的节点)就是当前数字(对应的节点)的前驱,后一个数字就是后驱。(先序/后序与此类似)

算法和数据结构———线索二叉树_第2张图片

你可能感兴趣的:(算法和数据结构__基础,算法和数据结构,数据结构,线索二叉树)