该篇文章为学校数据结构实验代码,包括二叉树的深度优先遍历与广度优先遍历 ,分别包括了递归与非递归的形式。
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 50
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
typedef struct //栈
{
BiTNode* data[MAXSIZE];
int top;
}SqStack;
//初始化栈
SqStack* InitStack(SqStack* s)
{
s = (SqStack*)malloc(sizeof(SqStack));
s->top = -1;
return s;
}
//销毁栈
void DestroySqStack(SqStack* s)
{
free(s);
}
//判断栈是否为空
int StackEmpty(SqStack* s)
{
if (s->top == -1)
{
return 1;
}
else
{
return 0;
}
}
//进栈
void push(SqStack* s, BiTNode* p)
{
if(s->top == MAXSIZE-1)
{
return;
}
s->top++;
s->data[s->top] = p;
}
//出栈
SqStack* pop(SqStack* s)
{
if (s->top == -1)
{
return NULL;
}
s->top--;
return s;
}
//取栈顶
BiTNode* GetTop(SqStack* s)
{
if (s->top == -1)
{
return NULL;
}
return s->data[s->top];
}
void C