栈实现先序遍历算法【非递归】

it2026-06-19  7

void InOrder2(BiTree T){ InitStack(S); BiTree p=T; //初始化栈S;P为遍历指针 while (p||!IsEmpty(S)){ //栈不空或p不空时循环 if(p){ //一路向左 visit(p); Push(S,p); //当前节点入栈,栈顶元素出栈, p=p->lchild; //左孩子不空,一直像左走 }else{ //出栈,并转向出栈节点的右子树 Pop(S,p); //访问出栈节点 p=p->rchild; //向右子树走,p赋值为当前节点的右孩子 } //返回while循环继续进入if-else语句 } }

 

最新回复(0)