丿fun 发表于 2016-1-5 17:31:51

第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;
      }
}

zerco 发表于 2016-1-10 16:29:02

希望這年也能事事順利

翟森 发表于 2016-1-12 17:21:25

叶子节点

Code_mzh 发表于 2018-2-17 12:18:08

因为c是遍历开始的第一个结点,所以他的左指针应该指向前趋结点,而前趋结点就是头结点,所以要指向pre,头指针与F相连的话,可以应付其他需求,例如从其他结点开始遍历整个二叉树
页: [1]
查看完整版本: 第49讲线索二叉树代码实现 收尾时的问题