假设二叉树采用二叉链表存储结构,请编写一个算法,求一棵二叉树中的最大结点值。

•假设二叉树采用二叉链表存储结构,请编写一个算法,求一棵二叉树中的最大结点值。(C语言,最好有必要的注释)

Status PostOrderTraverse(BiTree T)
{
//后序遍历二叉链表树的非递归算法
//找到结点最大值
SqStack S;
InitStack(S);
BiTree p = T;
BiTree pre = NULL;//pre指向上次访问的结点
TElemType Maxdata = T->data;//用来储存最大值
while (p || !StackEmpty(S))
{
while (p)
{
Push(S, p);
p = p->lchild;
}
GetTop(S, p);
if (p->rchild == NULL || pre == p->rchild)
{
if (p->data > Maxdata)
Maxdata = p->data;//更新最大值
Pop(S, pre);
p = NULL;//避免下次重新进入p的左子树
}
else
p = p->rchild;//走向p的右子树
}
return OK;
}
温馨提示:答案为网友推荐,仅供参考