数据结构和算法分析

数据结构-线索二叉树

2020-02-20  本文已影响0人  小明同学机器人
定义
typedef struct BiThrNode
{
  TelemType data;
  struct BitThrNode *lchild,*rchild;
  int  lRag,rtag;
}BiThrNode,*BiThrTree;
变量 value=0 value=1
lTag lchild域指示结点的左孩子 lchild域知识结点的前驱
rTag rchild域指示结点的右孩子 rchild域指示结点的后继
BiThrTree pre;
void InThreading(BiThrTree p) {
    if (p) {
        InThreading(p->lchild);  //讲左子树进行线索化
        {
            if (!p->lchild) {  //如果左子树为空
                p->lRag = 1;   //p加上左线索
                p->lchild = pre;//p的左孩子的指针指向前驱
            } else {
                p->lRag = 0;   //p的左子树不为空 
            }
            if (!pre->rchild) {  //pre 结点加右线索
                pre->rtag = 1;   
                pre->rchild = p;     //pre 有孩子指向后继
            } else {
                p->rtag = 0;
            }
            pre = p;   //保持pre指向p的前驱,反之后继
            InThreading(p->rchild); //讲右子树进行线索化
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读