嘛 首先以麻烦的链表方式定义一个栈的结构体
其中数据为树的节点 用于创建二叉树过程中存储树的节点(
顺便来个全局变量(栈)防止函数中来回传递
typedef struct binode{
char s;//方便起见 用字符型
struct binode *lchild;
struct binode *rchild;
}bitree;
typedef struct node{
bitree* data;
struct node *next;
}linkstack;
linkstack* ls;
栈的相关操作
void push(bitree *bt){
linkstack *p=(linkstack *)malloc(sizeof(linkstack));
p->data=bt;
p->next=NULL;
if(ls==NULL)
{
ls=p;
}
else
{
p->next=ls;
ls=p;
}
}
bitree *pop()
{
if(ls==NULL)
{
puts("栈空");
return NULL;
}
else
{
linkstack *q=ls;
ls=ls->next;
return q->data;
}
}
按照某些教材的操作
定义一个创建二叉树的函数
void create_btree(bitree *bt,char s[])
函数接受一个二叉树(的根节点的地址)和字符串 按照该字符串的形式创建一个二叉树
按照教材的方法 打出来大抵如此
void create_btree