1.二叉树的遍历实质上是对一个非线性结构进行线性化的过程,它使得每个节点(除第一个和最后一个)在这些线性序列中有且仅有一个直接前驱和直接后继。但在二叉链表存储结构中,只能找到一个节点的左、右孩子,不能直接得到节点在任一遍历序列中的前驱和后继,这些信息只有在遍历的动态过程中才能得到,因此引入线索二叉树来保存这些动态过程得到的信息。2.建立线索二叉树为了保存节点在任一序列中的前驱和后继信息,可以考虑在每个节点中增加两个指针域来存放遍历时得到的前驱和后继信息,这样就可以为以后的访问带来方便。但增加指针信息会降低存储空间的利用率,因此可以考虑其他方法。若n个节点的二叉树采用二叉链表做存储结构,则链表中必然有n+1个空指针域,可以利用这些空指针域来存放节点的前驱和后继信息。为此,需要在节点中增加标志ltag和rtag,以区分孩子指针的指向,如下所示。
其中 ltag=$$ f(x)=\left{\begin{aligned}x & = & \cos(t) \y & = & \sin(t) \z & = & \frac xy\end{aligned}\right.$$