4.已知线索二树中的结点类型 TBTNode的声明下
typedef struct node
ElemType data
数据域
int Itag. rtag
左、右线索标志域
struct node Ichild左孩子链域或指向前驱的线索
struct node rchild:右孩子链域或指向后继的线索
TBTNode;
完成下面的算法,实现在中序线索二叉树中找结点p的中序前驱,返回前驱结点的指针
(1)inprior(TBTNode*p)中序线索二叉树中找结点p的直接前驱
(2)
if(p->ltag==1) pre=p->lchild:
else
(3)
while(pre->rtag==0)
(4)
return pre;
TBTNode* inprior(TBTNode *p) {
TBTNode* pre;
pre = p;
if (pre->ltag == 1) {
pre = pre->lchild;
return pre ;
}
else{
pre = pre->lchild;//进入左子树
while (pre->rTag == 0) {
pre = pre->rchild;
}//找到左子树的最右边结点
return pre;
}
}