题目

在线索化二叉树中,节点t没有左子树的充要条件是()
(1) t->lchild==NULL
(2) t->ltag==1
(3) t->ltag==1且t->lchild==NULL
(4)以上答案都不对
每日一题 day28.001.png

答案

(2) t->ltag==1

如图以中序二叉树为例,我们可以把这颗二叉树中所有空指针域的lchild,改为指向当前结点的前驱(灰色箭头),把空指针域中的rchild,改为指向结点的后继(绿色箭头)。我们把指向前驱和后继的指针叫做线索 ,加上线索的二叉树就称之为线索二叉树
image.png
如果只是在原二叉树的基础上利用空结点,那么就存在着这么一个问题:我们如何知道某一结点的lchild是指向他的左孩子还是指向前驱结点?rchild是指向右孩子还是后继结点?显然我们要对他的指向增设标志来加以区分。
因此,我们在每一个结点都增设两个标志域LTagRTag,它们只存放0或1的布尔型变量,占用的空间很小。于是结点的结构如图所示。
image.png

结点结构
其中:

LTag为0是指向该结点的左孩子,为1时指向该结点的前驱 RTag为0是指向该结点的右孩子,为1时指向该结点的后继

image.png
因此,节点 t 没有左节点的充要条件是 t->ltag==1

参考资料:理解线索二叉树 https://www.jianshu.com/p/deb1d2f2549a