c语言数据结构题,求大神
1个回答
展开全部
// 二叉树的先序遍历序列: E A C B D G F
// 二叉树的中序遍历序列: A B C D E G F
// 二叉树的后序遍历序列: B D C A F G E
#include "stdio.h"
#include "stdlib.h"
struct tree
{
char data;
struct tree *left;
struct tree *right;
};
typedef struct tree treenode;
typedef treenode *btree;
btree createbtree(char *data,int pos,int maxPos) //递归创建法
{
btree newnode;
if(data[pos]==0 || pos>maxPos)
{
return NULL;
}
else
{
newnode=(btree)malloc(sizeof(treenode));
newnode->data=data[pos];
newnode->left=createbtree(data,2*pos,maxPos);
newnode->right=createbtree(data,2*pos+1,maxPos);
return newnode;
}
}
void inorder(btree ptr)
{
if(ptr!=NULL)
{
inorder(ptr->left);
printf("%C ",ptr->data);
inorder(ptr->right);
}
}
void preorder(btree ptr)
{
if(ptr!=NULL)
{
printf("%C ",ptr->data);
preorder(ptr->left);
preorder(ptr->right);
}
}
void postorder(btree ptr)
{
if(ptr!=NULL)
{
postorder(ptr->left);
postorder(ptr->right);
printf("%C ",ptr->data);
}
}
int main()
{
btree root=NULL;
int i;
char data[16]={0,'E','A','G',0,'C',0,'F',0,0,'B','D',0,0,0,0};
root=createbtree(data,1,15);
printf("二叉树的顺序存储内容: ");
for(i=1;i<16;i++)
{
if(data[i]==0)
{
printf("^ ");
}
else
{
printf("%C ",data[i]);
}
}
printf("\n二叉树的先序遍历序列: ");
preorder(root);
printf("\n二叉树的中序遍历序列: ");
inorder(root);
printf("\n二叉树的后序遍历序列: ");
postorder(root);
printf("\n");
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询