一:线索二叉树
遍历二叉树的结果是,求得结点的一线性序列,对非线性结构进行线性化操作
先序序列:
A B C D E F G H K
中序序列:
B D C A H G K F E
后序序列:
D C B H K G F E A
二:对线索链表中结点的约定:
在二叉链表的结点中增加两个标志域,
并作如下规定:
若该结点的左子树不空,
则Lchild域的指针指向其左子树,
且左标志域的值为“指针 Link=0”;
否则,Lchild域的指针指向其“前驱”,
且左标志的值为“线索 Thread=1” 。
若该结点的右子树不空,
则rchild域的指针指向其右子树,
且右标志域的值为 “指针 Link=0”;
否则,rchild域的指针指向其“后继”,
且右标志的值为“线索 Thread=1”。
如此定义的二叉树的存储结构称作“线索链表”。
线索链表的遍历算法:
由于在线索链表中添加了遍历中得到的“前驱”和“后继”的信息,从而简化了遍历的算法。
三:
如何建立线索链表
方法:在遍历过程中修改空指针
例:画出下面二叉树的中序线索二叉树
中序遍历序列:D B E G A F H C