利用非递归实现前序遍历中序遍历算法
#include<stdio.h>
#include<stdlib.h>
#define MaxStackSize 100
typedef char ElemType;
#include "BiTree.h"
typedef BiTreeNode* DataType;
#include "SeqStack.h"
void PreOrderByStack(BiTreeNode *root)
{
SeqStack s;
BiTreeNode *p=root;
StackInitiate(&s);
while(StackNotEmpty(s)||p) //StackNotEmpty(SeqStack S)
{
if(p)
{
visit(p);
StackPush(&s,p); //StackPush(SeqStack *S,DataType x)
p=leftchild(p);
}
else
{
StackPop(&s,&p); //StackPop(SeqStack *S,DataType *d)
p=rightchild(p);
}
}
printf("\n");
}
void InOrderByStack(BiTreeNode *root)
{
SeqStack s;
BiTreeNode *p=root;
StackInitiate(&s);
while(StackNotEmpty(s)||p) //StackNotEmpty(SeqStack S)
{