写出下图所示二叉树进行先序遍历、中序遍历、后序遍历时得到的顶点序列。
写出下图所示二叉树进行先序遍历、中序遍历、后序遍历时得到的顶点序列。2.写出下图所示二叉树进行先序遍历、中序遍历、后序遍历时得到的顶点序列。先序遍历:中序遍历:后序遍历:...
写出下图所示二叉树进行先序遍历、中序遍历、后序遍历时得到的顶点序列。 2.写出下图所示二叉树进行先序遍历、中序遍历、后序遍历时得到的顶点序列。
先序遍历: 中序遍历: 后序遍历: 展开
先序遍历: 中序遍历: 后序遍历: 展开
1个回答
展开全部
先序遍历序列: A B D C E
中序遍历序列: B D A E C
后序遍历序列: D B E C A
A
/ \
B C
\ /
D E
//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[16]={0,'A','B','C',0,'D','E',0,
0,0,0,0,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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询