第49讲线索二叉树代码实现 收尾时的问题
在InOrderThreading()函数中最后小甲鱼说需要头尾相连,F的后继与头指针相连我可以理解,但是C与头指针相连是怎么实现的而且为什么需要C也相连?还有头指针的后继为什么需要与F相连?
void InOrderThreading( BiThrTree *p, BiThrTree T )
{
*p = (BiThrTree)malloc(sizeof(BiThrNode));
(*p)->ltag = Link;
(*p)->rtag = Thread;
(*p)->rchild = *p;
if( !T )
{
(*p)->lchild = *p;
}
else
{
(*p)->lchild = T;
pre = *p;
InThreading(T);
pre->rchild = *p; //收尾
pre->rtag = Thread;
(*p)->rchild = pre;
}
}
希望這年也能事事順利 叶子节点 因为c是遍历开始的第一个结点,所以他的左指针应该指向前趋结点,而前趋结点就是头结点,所以要指向pre,头指针与F相连的话,可以应付其他需求,例如从其他结点开始遍历整个二叉树
页:
[1]