概述
/**
* 实验题目:
* 实现二叉树各种遍历算法
* 实验目的:
* 领会二叉树的各种遍历过程以及遍历算法设计
* 实验内容:
* 设计程序,实现二叉树的先序遍历、中序遍历和后序遍历的
* 递归和非递归算法,以及层次遍历的算法。
*/
#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>
#define MAX_SIZE 100
typedef char ElemType;
typedef struct node
{
ElemType data; // 数据元素
struct node *lchild; // 指向左孩子结点
struct node *rchild; // 指向右孩子结点
}BTNode; // 声明二叉链结点类型
/*-------------由括号表示串str创建二叉链b-----------------*/
static void create_btree(BTNode *&b, char *str) // 创建二叉树(形参b:指针的引用)
{
BTNode *p;
BTNode *St[MAX_SIZE]; // 定义一个顺序栈
int k;
int j = 0;
int top = -1; // 栈顶指针初始化
char ch;
b = NULL; // 建立的二叉树初始时为空
ch = str[j]; // 取第一个字符
while(ch != '