问题 问答题


假设以带双亲指针的二叉链表作为-二叉树的存储结构,其结点结构的类型说明如下所示:
typedef char DataType;
typedef struct node{
DataType data;
struct node*lchild,*rchild; //左右孩子指针
struct node*parent; //指向双亲的指针
}BinTNode;
typedef BinTNode*BinTree;
若px为指向非空二叉树中某个结点的指针,可借助该结构求得px所指结点在二叉树的中序序列中的后继。

就后继的不同情况,简要叙述实现求后继操作的方法;

答案

参考答案:

解析:分两种情况讨论 ①当*px的右子树不为空时,则从*px的右孩子开始,沿其左孩子往下查找,直至找到一个没有左孩子的结点为止,则该结点为*pX在中序序列中的后继; ②当*px的右子树为空时,则沿*px的双亲指针链向上查找,直至找到其左子树中包含*px的最年轻祖先,则该祖先结点为*px在中序序列中的后继。

单项选择题
单项选择题