寻求注释-----二叉树非递归遍历

来源:百度知道 编辑:UC知道 时间:2024/05/23 09:38:17
下面是二叉树非递归算法的现实,可是一直看不懂那些每件叛断是什么意思啊,如whlie if 语句里的条件叛断是什么意思喔,请教高手帮注释下!

void inorder(TREE *root)//非递归中序遍历

{
struct TREE *s[100];
int top=0;
while(root||top)
{
while(root)
{
s[++top]=root;root=root->lsubtree;
}
if(top)
{
putchar(s[top]->data);
root=s[top--]->Rsubtree;
}
}
}

void inorder(TREE *root)//非递归中序遍历

{
struct TREE *s[100];
int top=0;
while(root||top) //root不为null即没有左遍历完(root一直向左走),top不为0说明右遍历没完成的意思.如果全为0了.可能树是空树,初始就为0,或者不是空树但遍历已完成
{
while(root) //如果root值不为null则循环,就是说下面还有分支就继续左遍历,否则已达底端跳出循环
{
s[++top]=root;root=root->lsubtree;
}
if(top)//左遍历完成后,top值当然不为0了,如果top不为0,输出遍历到底后的值,并将root指向右叉
{
putchar(s[top]->data);
root=s[top--]->Rsubtree;
}
}
}