1、线索二叉树:传统链式存储仅能体现一种父子关系,不能直接得到结点在遍历中的前驱或后继。二叉链表中存在大量的空指针,利用这些空链域存放指向其直接前驱或后继的指针,则可更方便地运用某些二叉树操作算法。引入线索二叉树是为了加快查找前驱和后继的速度。
2、在N个结点的二叉树中,有N+1个空指针
3、在二叉树线索化时,通常规定:若无左子树,令lchild指向其前驱结点;若无右子树,令rchild指向其后继结点。还需要增加两个标志域表明当前指针域所指对象是左(右)孩子还是直接前驱(后继)
其中标志域含义如下:
线索二叉树存储结构的描述代码:
Typedef struct ThreadNode{
ElemType data; //数据元素
Struct ThreadNode *lchild,*rchild;//左右孩子指针
Int ltag,rtag; //左右线索标志
}ThreadNode,*ThreadTree;