(十一)数据结构-线索二叉树

线索二叉树是(物理)结构=存储结构
解析:二叉树是一种逻辑结构,但是线索二叉树加上线索后的链表结构,即它是二叉树在计算机内部的一种存储结构,所以是一种物理结构
注意:无逻辑和存储结构这一说法,它其实就是“物理结构”,但是没有这个说法!

一、引入线索二叉树目的

引入线索二叉树是为了查找结点前驱和后继的速度,知道了"前驱"、"后继"信息,就可以把二叉树看作一个链表结构,从而可以像遍历链表一样遍历二叉树

二、线索二叉树的规定

规定:若无左子树,令lchild指向其前继结点;
若无右子树,令rchild指向其后继结点;
另外还需要增加两个标志域指向左(右)孩子还是指向前驱(后继)
在这里插入图片描述
标识域含义如下:
(十一)数据结构-线索二叉树_第1张图片
以这种结点结构构成的二叉链表作为二叉树的存储结构,成为线索链表;
其中指向结点和后继的指针成为线索,加上线索的二叉树成为线索二叉树;

三、线索二叉树的构建

步骤:

  1. 求遍历
  2. 看空域
  3. 连线-左右
    举例说明:
    先序线索二叉树的构建
    1.首先我们将此二叉树的的先序遍历此二叉树得到结果
    ABCDE
    (十一)数据结构-线索二叉树_第2张图片
    2.从二叉树我们可以看出A连接了BE,因此A没有空域,我们写0;
    B也连接了CD,因此没有空域,我们写0;
    C没有连接子树,因为我们是二叉树,所以有两个空域
    3.A、B没有空狱,不需要连线,C有两个空域,从遍历结果可以看到C左边是A,右边是C,所以连线连左右边
    4.E有两个空域,但是只有左边,所以E的右边指向null

(十一)数据结构-线索二叉树_第3张图片
(十一)数据结构-线索二叉树_第4张图片
中序线索二叉树的构建
方法都是一样的,下面直接放结果:
(十一)数据结构-线索二叉树_第5张图片
后序线索二叉树的构建
(十一)数据结构-线索二叉树_第6张图片

你可能感兴趣的:(数据结构,数据结构,链表,算法)