问答题 已知中序线索二叉树T的右予树不空。设计算法,将s所指的结点作为T的右子树中的一个叶子结点插入进去,并使之成为T的右子树(中序序列)的第一个结点(同时要修改相应的线索关系)。【合肥工业大学2001年】
【正确答案】正确答案:算法的基本设计思想:若使新插入的叶子结点s成为T右子树中序序列的第一个结点,则应在T的右子树中最左面的结点(设为p)处插入,使S成为结点p的左子女,则S的前驱是T,后继是p。算法的代码: void ThrTreeInsert(BiThrTree T,BiThrTree S)( //在中序线索二叉树T的右子树上插入结点S,使s成为T右子树中序遍历第一个结点 p=T->rchiid; //用P去指向T的右子树中最左面的结点 while(p一>1taq==0) p=p一>1child; s一>itag:1; //s是叶子结点,其左、右标志均为1 S一>rtag=1; S->lc"hild:T; //S的前驱是根结点T,后继是结点P S一>rchild=P; D一>ichild:S; //将P的左子女指向S,并修改左标志为0 P一>1tag=0; }/IThrTreeInsert
【答案解析】