【输出给定中序线索二叉树的结点x后继节点值】
算法描述:
0/声明求值函数x的后继节点
1/根据线索二叉树的储存结构判定后继的位置((ltag|lc|data|rc|rtag)为x的结点)
2/判定条件以及对应的执行方式(如果存在右子树(右孩子为单个子树):后继就是右子树的第一个结点「if(rtag=0 p=rightchild;while(ltag=0)p=lchind」如果p的右子树不存在(rtag=1,后继就是右孩子(这是线索化的好处)「if(rtag=1)p=rc」))
算法:
bitree afterxnode(bitree bt)//求x的后继节点的值。
「
if (rtag=0)
p=rightchild;//存在右子树,后继就是右子树第一个结点
while(ltag=0)
「
p=lchild;
」
else //不存在右子树,后继是右孩子。
p=rightchild;
printf(“x的后继是%d”p->data)
」