文档介绍:一、实验题目:建立二叉树二叉链表存储结构实现有关操作.
二、问题描述:
建立二叉树的二叉链表存储结构实现以下操作(选择其中的两个做)(1)输出二叉树(2)先序遍历二叉树(3)中序遍历二叉树
(4)后序遍历二叉树(5)层次遍历二叉树
一、实验题目:建立二叉树二叉链表存储结构实现有关操作.
二、问题描述:
建立二叉树的二叉链表存储结构实现以下操作(选择其中的两个做)(1)输出二叉树(2)先序遍历二叉树(3)中序遍历二叉树
(4)后序遍历二叉树(5)层次遍历二叉树
三、需求分析:
建立二叉链表树
先序遍历二叉树:若二叉树为空,则空操作;否则先访问根结点,再先序遍历左子树,最后先序遍历右子树
中序遍历二叉树:若二叉树为空,则空操作;否则先访问根结点,再中序遍历左子树,最后中序遍历右子树
⑷测试数据:a,b,c,d,e测试输出结果为先根遍历:a,b,d,c,e中根遍历:b,d,a,e,c
四、概要设计:
结点结构定义:
structbtnode
{
chardata;//数据
bitreptrlchild;//左节点指针
bitreptrrchild;//右节点指针
};
二叉树的定义与初始化:
bitreptrCreateTree()
{
bitreptra,b,c,d,e;
bitreptrnodes[5];
for(intj=0;j<5;j++)
{nodes[j]=(bitreptr)malloc(sizeof(btnode));nodes[j]->lchild=NULL;nodes[j]->rchild=NULL;
}
a=nodes[0];
b=nodes[1];
c=nodes[2];
d=nodes[3];
e=nodes[4];
a->data='a';a->lchild=b;a->rchild=c;
b->data='b';
b->rchild=d;
c->data='c';c->lchild=e;d->data='d';e->data='e';
returna;
}
voidvisit(constbitreptrnode)
{
cout<<node->data<<endl;
}
3)先序遍历:voidpreorder(constbitreptrroot)
{
bitreptrnode=root;
if(node!=NULL)
{
visit(node);
preorder(node->lchild);preorder(node->rchild);
}
}
(4)中根遍历:
voidinorder(constbitreptrroot){
bitreptrnode=root;
if(node!=NULL)
{
inorder(node->lchild);visit(node);
inorder(node->rchild);}
}
五、详细设计及模块代码:
#include""
#include""
typedefstructbtnode*bitreptr;structbtnode
//数据
//左节点指针
//右节点指针
//建立一个树,函数返回一个