步骤:
1.创建栈
2.创建一个指针p,辅助遍历
3.左子树循环入栈,直到最后一个结点没有左孩子
4.读栈顶,出栈
5.p指向p的右孩子
void InOrderUncursionTravere(BiTree T) { BiTNode *stack[Maxsize]; //定义一个栈 int top = -1; BiTNode *p = T; //定义指针p用于遍历 while(top > -1 || p != NULL) //当栈不为空或p不为空时,进入如下循环 { while(p != NULL) //循环将全部左子树入栈 { stack[++top] = p; p = p->lchild; } p = stack[top]; //p指向栈顶,读并出栈 printf("%c", p->data); --top; p = p->rchild; //p指向它的右孩子 } }