数据结构-二叉树的遍历(北华大学吕磊)
#include
typedef struct BiTNode {
char data;
struct BiTNode *lChild,*rChild; }BiTNode,*BiTree;
typedef struct SqStack {
BiTNode *base; BiTNode *top; int stacksize; } SqStack;//栈类型
void InitStack(SqStack *S)//创建栈 {
S->base=(BiTNode*)malloc(STACK_INIT_SIZE*sizeof(BiTNode)); S->top=S->base;
S->stacksize=STACK_INIT_SIZE; }
int StackEmpty(SqStack *S)//判断栈是否非空 {
if(S->top == S->base ) return OK; else return ERROR; }
void Push(SqStack *S,BiTNode e)//进栈 {
if(S->top-S->base>=S->stacksize) {
S->base=(BiTNode*)realloc(S->base,
(S->stacksize+STACKINCREMENT)*sizeof(BiTNode));
S->top=S->base+S->stacksize; S->stacksize+=STACKINCREMENT; }
*(S->top)=e; S->top++; }
BiTNode Pop(SqStack *S)//出栈 {
S->top --; return *S->top; }
typedef BiTree QElemType; //设栈元素为二叉树的指针类 型
typedef struct {
QElemType *base;
int front; //头指针,若队列不空,指向队列头元
素
int rear; //尾指针,若队列不空,指向队列尾元素的下一个位置 }SqQueue;
int InitQueue(SqQueue *Q)//创建队列 {
(*Q).base=(QElemType
*)malloc(MAXQSIZE*sizeof(QElemType)); if(!(*Q).base) exit(OVERFLOW); (*Q).front=(*Q).rear=0; return OK; }
int QueueEmpty(SqQueue Q)//判断队列是否为空 {
if(Q.front==Q.rear) return OK; else return ERROR; }
int EnQueue(SqQueue *Q,QElemType e) //插入
数据结构-二叉树的遍历(北华大学吕磊)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)