二叉数组的创建以及后续遍历
2015-07-16 13:27
344 查看
//二叉数组的创建
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef struct node
{
char data;
struct node *lchild,*rchild;
}BTNode; //二叉数组的基本结点
//创建二叉数组传入一个头结点传入一个字符数组
void CreateBTree(BTNode* &bt,char *str)
{
BTNode *st[MaxSize],*p=NULL;
int top = -1,k,j=0;
char ch;
bt = NULL; //赋值为空
ch = str[j];
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(bt == NULL)
bt = p; //对二叉数组的头结点进行赋值
else
{
switch(k)
{
case 1:
st[top]->lchild = p;
break;
case 2:
st[top]->rchild = p;
break;
}
}
} //end of switch
j++;
ch = str[j];
} //end of while
}
//二叉数组的输出
void DisBTree(BTNode *bt)
{
BTNode *p = new BTNode;
p = bt;
if(p)
{
DisBTree(bt->lchild);
DisBTree(bt->rchild);
printf("%c ""\n",bt->data);
}
}
//二叉数组的测试以及后遍历
int main()
{
BTNode *a;
char b[] = "a(b(c,d),e(f,g))";
a = NULL;
CreateBTree(a,b);
DisBTree(a);
system("pause");
}
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef struct node
{
char data;
struct node *lchild,*rchild;
}BTNode; //二叉数组的基本结点
//创建二叉数组传入一个头结点传入一个字符数组
void CreateBTree(BTNode* &bt,char *str)
{
BTNode *st[MaxSize],*p=NULL;
int top = -1,k,j=0;
char ch;
bt = NULL; //赋值为空
ch = str[j];
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(bt == NULL)
bt = p; //对二叉数组的头结点进行赋值
else
{
switch(k)
{
case 1:
st[top]->lchild = p;
break;
case 2:
st[top]->rchild = p;
break;
}
}
} //end of switch
j++;
ch = str[j];
} //end of while
}
//二叉数组的输出
void DisBTree(BTNode *bt)
{
BTNode *p = new BTNode;
p = bt;
if(p)
{
DisBTree(bt->lchild);
DisBTree(bt->rchild);
printf("%c ""\n",bt->data);
}
}
//二叉数组的测试以及后遍历
int main()
{
BTNode *a;
char b[] = "a(b(c,d),e(f,g))";
a = NULL;
CreateBTree(a,b);
DisBTree(a);
system("pause");
}
相关文章推荐
- Android学习之MiniTwitter记住密码
- arguments.callee 调用自身 caller,callee,apply and call
- 总结
- asp.net mvc让我告诉你请求从哪里来
- 大圣画廊v0.1(2015.7.16)
- cocos2d-x游戏实例(10)-塔防游戏(修改地图图素,地图整体缩放)
- 【协议分析】PC QQ协议聊天内容破解
- openstack cinder - 磁盘配额管理
- cocos2d-x游戏实例(9)-A星算法(5)
- vs2010 qt创建自定义部件类比如MyLineEdit
- js中递归函数的使用介绍
- KVC 与 KVO 理解
- hdu 5050
- static关键词
- cocos2d-x游戏实例(8)-A星算法(4)
- cocos2d-x游戏实例(7)-A星算法(3)
- // 插入排序 源码
- Spring的WebService开发
- Python的Django框架中的Context使用
- 单点登录(二)使用Cookie+File实现单点登录登出(附源码)