#include<iostream>
using namespace std;
typedef struct BiTreeNode{//二叉树节点定义
char data;
struct BiTreeNode *lchild,*rchild;
}BiTreeNode,*BiTree;
typedef BiTree ElemType;//链栈数据类型定义
typedef enum{//链栈状态定义
OVERFLOW=-1,
ERROR=0,
OK=1
}Status;
typedef struct StackNode{//链栈节点定义
ElemType data;
struct StackNode *next;
}StackNode,*LinkStack;
Status InitStack(LinkStack &S){//链栈初始化
S=NULL;
return OK;
}
bool StackEmpty(LinkStack S){//判断链栈是否为空
return S?false:true;
}
Status Push(LinkStack &S,ElemType e){//Push函数
StackNode *p=new StackNode;
p->data=e;
p->next=S;
S=p;
return OK;
}
Status Pop(LinkStack &S,ElemType &e){//Pop函数
if(StackEmpty(S)) return ERROR;
e=S->data;
StackNode *p=S;
S=S->next;
delete p;
return OK;
}
ElemType GetTop(LinkStack S){//Gettop函数
return S->data;
}
Status ClearStack(LinkStack &S){//清空链栈
StackNode *p=S;
while(p){
S=S->next;
delete p;
p=S;
}
return OK;
}
void PreOrderCreateBiTree(BiTree &T){//先序创建二叉树
char ch;
cin>>ch;
if(ch=='#') T=NULL;
else{
T=new BiTreeNode;
T->data=ch;
PreOrderCreateBiTree(T->lchild);
PreOrderCreateBiTree(T->rchild);
}
}
void InOrderCreateBiTree(BiTree &T){//中序建立二叉树
char ch;
cin>>ch;
if(ch=='#') T=NULL;
else{
T=new BiTreeNode;
InOrde
数据结构之二叉树
最新推荐文章于 2022-11-19 19:58:04 发布