树的先序,中序,后序,递归遍历,中序非递归遍历
树的遍历
- 先序
(先根再左再右)
-中序
(先左再根再右)
-后序
(先左再右再根)
代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define OVERFLOW -1
#define STACK_INIT_SIZE 10//储存空间初始量
#define STACKINCREMENT 2
#define OK 1
#define ERROR 0
#define MAX_TREE_SIZE 100
typedef char TElemType;
typedef int Status;
typedef TElemType SqBiTree[MAX_TREE_SIZE];
typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild,*rchild;
} BiTNode,*BiTree;
typedef BiTree SElemType;
struct SqStack {
SElemType *base;// zhandi
SElemType *top;//zhanding
int stacksize;//已分配的储存空间
};
Status InitStack(SqStack &S) {
//构造一个空栈
if(!(S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType))))exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status StackEmpty(SqStack S)