》利用栈实现
StatusPreOrderTraverse(BiTree T,Status(*Visit)(TElemType e)){//先序遍历二叉链表,每个元素调用Visit
InitStack(S);P=T;
while (p||StackEmpty(S)){
if(p){
Visit(p->data); //访问根结点
push(S,p);p=p->lchild; //根结点入栈,遍历左子树
}//if
else{ //根结点出栈,遍历右子树
pop(S,p);
p=p->rchild;
}//else
}//while
return OK;
}//PreOrderTraverse
》递归实现
void PreOrder(BiTree T){
if(T){
printf("%c",T->data); //访问结点
PreOrder(T->lchild); //遍历左子树
PreOrder(T->rchild); //遍历右子树
}//if
}//PreOrder
本文介绍了一种使用栈实现的二叉树先序遍历算法及递归实现方式,详细展示了每一步操作过程。
457

被折叠的 条评论
为什么被折叠?



