根据先序和中序,画出二叉树
答案:1 悬赏:0 手机版
解决时间 2021-11-08 01:59
- 提问者网友:爱唱彩虹
- 2021-11-07 16:39
根据先序和中序,画出二叉树
最佳答案
- 五星知识达人网友:零点过十分
- 2021-11-07 17:43
二叉树示意图:
A
/
B F
/
E C G
/
D H J
I
先序遍历序列: ABECDFGHIJ
中序遍历序列: EBCDAFHIGJ
后序遍历序列: EDCBIHJGFA
//C语言测试程序
#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[32]={0,'A','B','F','E','C',0,'G',
0,0,0,'D',0,0,'H','J',
0,0,0,0,0,0,0,0,
0,0,0,0,0,'I',0,0};
root=createbtree(data,1,31);
printf("二叉树的顺序存储内容: ");
for(i=1;i<16;i++)
{
if(data[i]==0)
{
printf("^ ");
}
else
{
printf("%c ",data[i]);
}
}
printf("
先序遍历序列: ");
preorder(root);
printf("
中序遍历序列: ");
inorder(root);
printf("
后序遍历序列: ");
postorder(root);
printf("
");
return 0;
}
A
/
B F
/
E C G
/
D H J
I
先序遍历序列: ABECDFGHIJ
中序遍历序列: EBCDAFHIGJ
后序遍历序列: EDCBIHJGFA
//C语言测试程序
#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[32]={0,'A','B','F','E','C',0,'G',
0,0,0,'D',0,0,'H','J',
0,0,0,0,0,0,0,0,
0,0,0,0,0,'I',0,0};
root=createbtree(data,1,31);
printf("二叉树的顺序存储内容: ");
for(i=1;i<16;i++)
{
if(data[i]==0)
{
printf("^ ");
}
else
{
printf("%c ",data[i]);
}
}
printf("
先序遍历序列: ");
preorder(root);
printf("
中序遍历序列: ");
inorder(root);
printf("
后序遍历序列: ");
postorder(root);
printf("
");
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯