线索二叉树找前驱/后继
一、中序线索二叉树
1.【问】如何找到一个指定结点的中序后继,即找到指定结点*p的 中序后继
next
①若p->rtag==1,则 next = p->rchild
②若p->rtag==0,p必有右孩子
中序遍历----左 根 右
左 根 (左 根 右)
左 根 ((左 根 右) 根 右)
next = p 的右子树中最左下结点
【代码实现:中序线索二叉树找"中序后继"】
//找到以P为根的子树中,第一个被中序遍历的结点
ThreadNode *Firstnode(ThreadNode *p){
//循环找到最左下结点(不一定是叶子结点)
while(p->ltag==0)
p = p->lchild;
return p;
}
//在中序线索二叉树中找到结点p的后继结点
ThreadNode *Nextnode(ThreadNode *p){
//右子树中最左下结点
if(p->rtag==0)
return First