一、线索二叉树的作用
思考:
1.能否从指定结点开始中序遍历? 答:不能,它只有指向孩子的指针,没有指向父母的。因此只能从根节点出发。
2.如何找到指定结点P在中序遍历序列的前驱。 答:不能,没一个结点只有向下的指针,没有向上的指针。
综上所述: 思路----从根节点出发,重新进行一次中序遍历,指针q记录当前访问的结点,指针pre记录上一个被访问的结点。
1.当q==p时,pre为前驱。
2.当pre==p时,q为后继。
缺点:找前驱、后继分不方便,遍历必须从根开始。
因此有人提出了线索二叉树: n个结点的二叉树,有n+1个空链域;可用来记录前驱和后继的信息。将没有子树的结点的左指针指向前驱,右指针指向后继。
二、线索二叉树的存储结构
线索二叉树对比二叉树还需要设置两个线索标志,用来区分其指针指向的是孩子还是“线索”也就是前驱后继结点。
中序线索二叉树的存储:(前序、后序就不指出)
三种线索二叉树的对比: 中序前驱是 中序遍历下某个结点的前驱。以此类推总结: