/**
* 实验题目:
* 实现二叉树各种遍历算法
* 实验目的:
* 领会二叉树的各种遍历过程以及遍历算法设计
* 实验内容:
* 设计程序,实现二叉树的先序遍历、中序遍历和后序遍历的
* 递归和非递归算法,以及层次遍历的算法。
*/
#include <stdio.h>
#include <malloc.h>
#include<time.h>
#define MaxSize 100
typedef char ElemType;
typedef struct node
{
ElemType data; // 数据元素
struct node *lchild; // 指向左孩子结点
struct node *rchild; // 指向右孩子结点
}BTNode; // 声明二叉链结点类型
/*-------------由括号表示串str创建二叉链b-----------------*/
// char *str = "A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))";
void CreateBTNode(BTNode *&b, char *str)
{
BTNode *p = NULL;
BTNode *St[MaxSize];
int top = -1;
int k;
int j = 0;
char ch;
b = NULL;
ch = str[j];
// printf("start %s, ch = %c\n", __func__, ch);
while(ch != '\0')
{
switch(ch)
{
case '(':
top++;
St[top] = p;
k = 1;
break;
case ')':
top--;
break;
case ',':
k = 2;
break;
default:
p = (BTNode *)malloc(sizeof(BTNode));
p->data = ch;
p->lchild = p->rchild = NULL;
if(b == NULL)
b =