当以二叉树作为存储结构时,只能找到节点的左右孩子信息,不能直接得到结点在任一序列中的前驱和后继信息,只有在遍历过程中才能得到这种信息。而我们可以证明:在n个结点的二叉链表中含有n+1个空指针。因为含n个结点的二叉链表中含有2n个指针,除了根结点,每个结点都有一个从父结点指向该结点的指针,因此一共使用了n-1个指针,所以在n个结点的二叉链表中含有n+1个空指针。由此我们可以思考,利用原来的空链域存放指针,指向节点前驱和后继。这些指向直接前驱结点和指向直接后续结点的指针被称为线索(Thread)
我们规定:若节点有左子树,则其Lchild域指示其左孩子,否则令Lchild域指示其前驱;若节点有有子树,则其Rchild域指示右子树,否则,令Rchild域指示其后继,为了不混淆,增加两个标志域。
其中 LTag、RTag为0,分别表示Lchild,Rchild指示的节点的孩子,否则指示的是节点的前驱和后继。
时间: 2024-10-10 15:58:49