实现二叉树各种遍历算法
编写一个程序,实现二叉树的先序遍历,中序遍历和后序遍历的俄中递归和非递归算法,以及层次遍历的算法。
#include<stdio.h>
#include<malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct node{
ElemType
data;
//数据元素
struct node
*lchild;
//指向左孩子
struct node
*rchild;
//指向右孩子
}BTNode;
void CreateBTNode(BTNode *&b,char
*str){
//由str串创建二叉链
BTNode
*St[MaxSize],*p=NULL;
int
top=-1,k,j=0;
char
ch;
b=NULL;
//建立的二叉树初始时为空
ch=str[j];
while(ch!='\0'){
//str未扫描完时循环
switch(ch){
case '(':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=p;
//p指向二叉树的根结点
else{
//已建立二叉树根结点
switch(k){