线索二叉树

1.二叉树的遍历实质上是对一个非线性结构进行线性化的过程,它使得每一个节点(除第一个和最后一个)在这些线性序列中有且仅有一个直接前驱和直接后继。但在二叉链表存储结构中,只能找到一个节点的左、右孩子,不能直接获得节点在任一遍历序列中的前驱和后继,这些信息只有在遍历的动态过程当中才能获得,所以引入线索二叉树来保存这些动态过程获得的信息。 2.创建线索二叉树 为了保存节点在任一序列中的前驱和后继信息,能够考虑在每一个节点中增长两个指针域来存放遍历时获得的前驱和后继信息,这样就能够为之后的访问带来方便。但增长指针信息会下降存储空间的利用率,所以能够考虑其余方法。 若n个节点的二叉树采用二叉链表作存储结构,则链表中必然有n+1个空指针域,能够利用这些空指针域来存放节点的前驱和后继信息。为此,须要在节点中增长标志ltag和rtag,以区分孩子指针的指向,以下所示。指针

ltag lchild data rchild rtag

其中 ltag= $$ f(x)=\left{ \begin{aligned} x & = & \cos(t) \ y & = & \sin(t) \ z & = & \frac xy \end{aligned} \right. $$table

相关文章
相关标签/搜索