/*s[m]表示栈,top表示栈顶指针*/
void inorder(BiTree root) /*中序遍历二叉树,root卫二叉树的根结点*/
{
top=0;p=root;
do{
while(p!=NULL)
{ if(top>m) return;
top=top+1;
s[top]=p;
p=p->LChild;
}; /*遍历左子树*/
if(top!=0)
{p=s[top];
top=top-1;
Visit(p->data); /*访问根结点*/
p=p->RChild;} /*遍历右子树*/
}while(p!=NULL||top!=0)
}
我觉得这个程序无法完成遍历, –
减号的左右孩子为+和/ + /
+ 的孩子结点为a和* a * d e
/的孩子结点为d和e b c
*的孩子节点为b和c
我认为它不能遍历b c, 当访问了+号之后,会跳到减号那里,然后遍历减号的右子树
>> 本文固定链接: http://www.vcgood.com/archives/2791