前序遍历下的最后一个结点地址:
按照遍历顺序,根节点,左子树,右子树;
所以最后一个节点优先考虑右子树
bintree prelast(bintree t)
{
if(t->rchild)
t = prelast(t->rchild); //考虑右子树
else if(t->lchild)
t = prelast(t->lchild); //再考虑左子树
else return t; //最后左右子树都为空时,返回根节点
}
后序遍历下的第一个结点地址:
与前序恰好相反
bintree postfirst(bintree t)
{
if(t->lchild)
t = postfirst(t->lchild);
else if(t->rchild)
t = postfirst(t->rchild);
else return t;
}
中序遍历下的最后一个结点:
遍历顺序:左子树,根节点,右子树
所以最后一个节点是最右边的一个结点
bintree midlast(bintree t)
{
if(t && t->rchild)
t = midlast(t->rchild)
return t;
}