满足先序序列与后序序列相同的二叉树
答案:1 悬赏:0 手机版
解决时间 2021-04-14 08:35
- 提问者网友:聂風
- 2021-04-14 01:24
满足先序序列与后序序列相同的二叉树
最佳答案
- 五星知识达人网友:青灯有味
- 2021-04-14 02:58
#include
#include
#define ERROR 0
#define OK 1
#define OVERFLOW -1
#define STACK_ININT_SIZE 100
typedef char TElemType;
typedef char SElemType;
typedef struct BiTNode //二叉树存储结构
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int Visit(TElemType e) //输出元素
{
printf("%c",e);
return OK;
}
int PreOrderT(BiTree T,int(* Visit)(TElemType e)) //先序输出
{
if(T)
{
if(Visit(T->data))
if(PreOrderT(T->lchild,Visit))
if(PreOrderT(T->rchild,Visit))
return OK;
return ERROR;
}
else return OK;
}
int InOrderT(BiTree T,int(* Visit)(TElemType e)) //中序输出
{
if(T)
{
if(InOrderT(T->lchild,Visit))
if(Visit(T->data))
if(InOrderT(T->rchild,Visit))
return OK;
return ERROR;
}
else return OK;
}
int PosOrderT(BiTree T,int(* Visit)(TElemType e)) //后序输出
{
if(T)
{
if(PosOrderT(T->lchild,Visit))
if(PosOrderT(T->rchild,Visit))
if(Visit(T->data))
return OK;
return ERROR;
}
else return OK;
}
BiTree CreateBiTree(BiTree &T) // 先序输入二叉树
{
char ch;
scanf("%c",&ch);
if(ch==' ') T=NULL;
else
{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return T;
}
void main()
{
BiTree T;
printf("请按先序次序输入二叉树:\n");
CreateBiTree(T);
printf("----------------\n");
printf("先序遍历为:\n");
PreOrderT(T,Visit);
printf("\n");
printf("中序遍历为:\n");
InOrderT(T,Visit);
printf("\n");
printf("后序遍历为:\n");
PosOrderT(T,Visit);
printf("\n");
}
#include
#define ERROR 0
#define OK 1
#define OVERFLOW -1
#define STACK_ININT_SIZE 100
typedef char TElemType;
typedef char SElemType;
typedef struct BiTNode //二叉树存储结构
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int Visit(TElemType e) //输出元素
{
printf("%c",e);
return OK;
}
int PreOrderT(BiTree T,int(* Visit)(TElemType e)) //先序输出
{
if(T)
{
if(Visit(T->data))
if(PreOrderT(T->lchild,Visit))
if(PreOrderT(T->rchild,Visit))
return OK;
return ERROR;
}
else return OK;
}
int InOrderT(BiTree T,int(* Visit)(TElemType e)) //中序输出
{
if(T)
{
if(InOrderT(T->lchild,Visit))
if(Visit(T->data))
if(InOrderT(T->rchild,Visit))
return OK;
return ERROR;
}
else return OK;
}
int PosOrderT(BiTree T,int(* Visit)(TElemType e)) //后序输出
{
if(T)
{
if(PosOrderT(T->lchild,Visit))
if(PosOrderT(T->rchild,Visit))
if(Visit(T->data))
return OK;
return ERROR;
}
else return OK;
}
BiTree CreateBiTree(BiTree &T) // 先序输入二叉树
{
char ch;
scanf("%c",&ch);
if(ch==' ') T=NULL;
else
{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return T;
}
void main()
{
BiTree T;
printf("请按先序次序输入二叉树:\n");
CreateBiTree(T);
printf("----------------\n");
printf("先序遍历为:\n");
PreOrderT(T,Visit);
printf("\n");
printf("中序遍历为:\n");
InOrderT(T,Visit);
printf("\n");
printf("后序遍历为:\n");
PosOrderT(T,Visit);
printf("\n");
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯